Mit der kürzlichen Veröffentlichung von AmigaOS 3.2 und der Aussicht auf weitere Updates könnte es interessant sein, eigene EPROMs für den Amiga zu brennen. Glücklicherweise musst du keine teure Ausrüstung mehr kaufen, da EPROM-Brenner und -Löscher erschwinglich geworden sind. Dieser Artikel erklärt, wie ich Amiga-EPROMs zu Hause brenne.
Einkaufsliste
Zuallererst benötigen wir natürlich passende EPROMs. Diese Typen sind mit den meisten Amiga-Modellen kompatibel:
- AMD AM27C400
- Macronix MX27C4100 [sic!]
- STMicroelectronics M27C400
Es ist wichtig, Bauteile mit einer Zugriffszeit von 200 ns oder schneller zu wählen. Modelle wie der Amiga 4000 können sogar auf eine Zugriffszeit von 160 ns gejumpert werden. EPROMs mit 120 ns (oder weniger) sind leicht zu finden und definitiv auf der sicheren Seite. Beachte, dass Macronix die nachgestellte Null abschneidet, ein MX27C4100-12 hat also tatsächlich eine Zugriffszeit von 120 ns.
Zum Brennen der EPROMs verwende ich einen XGecu TL866II Plus Programmer und einen 27C400 Programmieradapter.
Im Gegensatz zu modernem Flash-Speicher können EPROMs nicht elektrisch gelöscht werden, sondern werden gelöscht, indem der Chip hinter dem Quarzglasfenster einer starken UV-Lichtquelle ausgesetzt wird. Aus diesem Grund ist auch ein EPROM-Löschgerät zu empfehlen. Beachte, dass es OTP-ROMs ohne dieses Fenster gibt, sie können überhaupt nicht gelöscht werden.
Keiner dieser EPROM-Typen wird noch produziert. Du findest vielleicht noch Quellen, die NOS-Teile verkaufen, aber in der Regel sind alle Chips auf dem Markt generalüberholt (“refurbished”). Ich bin etwas vorsichtig bei Chips, die zu neu aussehen oder angeblich von AMD hergestellt wurden. Es ist wahrscheinlich, dass es sich dabei nur um Macronix-Chips handelt, die schwarz lackiert und dann per Laser mit einem falschen AMD-Etikett graviert wurden. Ein Wattestäbchen und etwas Nagellackentferner decken den Betrug schnell auf.
Diese gefälschten Teile sind völlig in Ordnung. Sie werden nur wegen der angeblich edlen AMD-Herkunft zu einem höheren Preis verkauft, also kannst du genauso gut die Macronix-Chips direkt bestellen und Geld sparen.
Vorbereitung
Vor dem Brennen eines ROM-Dumps müssen alle geraden und ungeraden Bytes vertauscht werden. Bei Amiga-Modellen mit zwei ROM-Sockeln müssen diese Dumps außerdem in separate Images für das obere und das untere Wort (Upper/Lower Word) aufgeteilt werden. Um die Sache noch komplizierter zu machen, muss ein 256KB-ROM-Dump dupliziert werden, um den gesamten Speicherplatz eines 512KB-EPROMs auszufüllen.
Glücklicherweise liefert die AmigaOS 3.2 CD bereits *.bin-Dateien mit, die bereit zum Brennen sind. Für einfache ROM-Dumps (solche, die in Emulatoren verwendet werden können) kann mein Tool pynaroma zum Byte-Swapping, Splitten und Duplizieren verwendet werden.
ROM brennen
Für den TL866-Programmer verwende ich am liebsten die minipro Controller-Software. Sie ist Open Source und läuft unter Linux, MacOS und vielen anderen Unix-Derivaten, während die Originalsoftware des Herstellers Windows benötigt.
Der Programmieradapter wird in den Programmer gesteckt und das EPROM in den ZIF-Sockel des Adapters eingesetzt, wobei die Kerbe nach oben zeigt und der Chip bündig mit der Unterseite des Sockels abschließt. Stecke das EPROM nicht ohne diesen Adapter in den Programmer, da es sonst während des Betriebs zerstört wird.
Der Adapter simuliert die Pinbelegung eines AM27C4096-EPROMs, daher muss --device 'AM27C4096@DIP40' ausgewählt werden. Die Option --skip-id muss ebenfalls angegeben werden, da minipro den Vorgang sonst abbrechen würde, weil es einen anderen EPROM-Typ erkennt.
Für das Schreiben muss stattdessen die Option --no_id_error verwendet werden. Standardmäßig verwendet das Profil AM27C4096@DIP40 eine Programmierspannung von 13V und eine Schreibspannung von 6.5V. Auf meinen Chips steht VPP=12.5V, also habe ich die Programmierspannung mit der Option --vpp 12.5 reduziert. Es kann auch notwendig sein, die Schreibspannung mit der Option --vdd zu verringern. Schau im Zweifelsfall im Datenblatt nach.
Der erste Schritt ist zu überprüfen, ob das EPROM leer ist.
minipro --device 'AM27C4096@DIP40' --skip_id --blank_check
Wenn nicht, muss es zuerst gelöscht werden. 15 Minuten UV-Lichtbestrahlung im EPROM-Löschgerät sollten ausreichen. Wenn das EPROM danach immer noch nicht leer ist, wiederhole den Vorgang einfach.
Danach kann das ROM-Image (z.B. amigaos.bin) auf das EPROM gebrannt werden:
minipro --device 'AM27C4096@DIP40' --no_id_error --vpp 12.5 --write amigaos.bin
minipro verifiziert den Inhalt nach dem Brennen automatisch, aber du kannst dies auch manuell tun:
minipro --device 'AM27C4096@DIP40' --skip_id --verify amigaos.bin
Und der Vollständigkeit halber, so liest man den Inhalt eines gebrannten EPROMs in eine ROM-Image-Datei aus:
minipro --device 'AM27C4096@DIP40' --skip_id --read amigaos-read.bin
Nach dem Brennen sollte das Fenster abgedeckt werden, um den Chip vor Streulicht (UV) zu schützen. Ein einfacher Papieraufkleber ist ausreichend.