EPROM

Amiga-ROM flashen

Es ist möglich, EPROMs zu verwenden, um deinen Amiga auf das neueste AmigaOS zu aktualisieren. Leider werden diese EPROMs nicht mehr hergestellt, weshalb es zunehmend schwieriger wird, diese Teile auf dem Markt zu finden. Ein weiterer Nachteil ist, dass eine spezielle UV-Lichtquelle erforderlich ist, um EPROMs zu löschen, im Gegensatz zu modernen Flash-ROMs, die elektrisch gelöscht werden können.

Wäre es also nicht besser, stattdessen Flash-ROMs zu verwenden? Sicherlich ja, aber sie sind nicht in DIP-40-Gehäusen erhältlich, die in die Amiga-ROM-Sockel passen.

Der Flash-ROM-Adapter

djbase hat freundlicherweise das Design eines Amiga Flash-ROM-Adapters veröffentlicht. Er kann mit 29F400-, 29F800- oder 29F160-Flash-ROMs bestückt werden. Diese sind bei allen möglichen Elektronikhändlern erhältlich und können bis zu vier Amiga-ROMs in einem einzigen Chip speichern.

Neben der Platine und dem Flash-ROM-Chip benötigst du nur vier SMD-Widerstände, einen SMD-Kondensator und Stiftleisten. Das Problem ist jedoch, dass die Komponenten winzig sind und das Rastermaß der Flash-ROM-Chip-Pins sehr fein ist, weshalb dieses Projekt definitiv nicht für Löt-Anfänger geeignet ist. Vertrau mir. Ich habe drei davon für die Tonne produziert, bevor ich erfolgreich war.

Die Programmier-Hardware

Zur Programmierung verwende ich einen XGecu TL866II Plus Programmer und das SN001 Adapter Kit. djbase bietet außerdem einen speziellen Programmieradapter an, der mit dem TSOP48/SOP44 Base Board des SN001 Adapter Kits verbunden wird.

Beachte, dass du das aktive Base Board (SN001, rot auf dem Foto) benötigst. Das Standard-TSOP48-Base-Board (grün) funktioniert hier nicht.

Dieses Programmieradapter-Sandwich wird in den ZIF-Sockel des TL866-Programmers gesteckt. Der Flash-ROM-Adapter wird in den ZIF-Sockel der Adapterplatine gesetzt und die Stiftleisten beider Platinen werden entsprechend ihrer Beschriftung verbunden. Beachte, dass die aktuelle Revision der Adapter Flash-ROMs bis zum 29F160 unterstützt und fünf Kabel benötigt. Ich verwende noch die vorherige Revision mit nur vier Kabeln, weil sie mir besser gefällt.

Der GND-Pin deines Flash-Boards kann für den Flash-Vorgang offen bleiben. Er wird normalerweise verwendet, um einen Jumper oder Schalter in deinem Amiga anzuschließen, um die ROM-Bank auszuwählen.

Wenn du nicht vorhast, den Flash-ROM-Inhalt nach dem Löten zu ändern, kannst du dir auch den Programmieradapter sparen und stattdessen den SN003-Adapter verwenden (der oft dem SN001-Adapter-Kit beiliegt). Du würdest das Flash-ROM dann vor dem Löten flashen.

Die Binärdatei

Für die Vorbereitung der Binärdatei nutze ich mein Pynaroma-Toolkit. Es kümmert sich um das Zusammenfügen mehrerer ROM-Dateien und das notwendige Byte-Swapping. Um zum Beispiel ein ROM-Image von AmigaOS 2.04 und AmigaOS 3.2.1 für den Amiga 500 zu erstellen, kann diese Befehlszeile verwendet werden:

rom2bin -o flash.bin A500.37.175.rom CDTVA500A600A2000.47.102.rom 

Je nach Flash-ROM-Chip kannst du bis zu vier verschiedene ROM-Dateien zu je 512 KB verwenden. Wenn die ROM-Datei eine Größe von 256 KB hat, denke daran, sie zu duplizieren.

Sobald sich der Adapter im Amiga befindet, kann das gewünschte ROM-Image über die Adressleitungen der Stiftleiste ausgewählt werden (z. B. durch Verwendung von Jumpern oder Schaltern). Beachte, dass die Adresspins des Flash-ROMs durch den Adapter auf High-Pegel gezogen (Pull-Up) werden. Das bedeutet, dass die letzte ROM-Datei der Sequenz verwendet wird, wenn alle Header-Pins offen sind.

Flashen

Für die Programmierung bevorzuge ich die Open-Source-Software minipro gegenüber der Originalsoftware von XGecu, hauptsächlich weil die Originalsoftware nicht für Linux verfügbar ist.

Es ist wichtig, den richtigen Flash-ROM-Typ auszuwählen. Wähle den Typ, den du tatsächlich auf deinen Adapter gelötet hast. Wähle immer das TSOP48-Gehäuse, da der Programmieradapter einen TSOP48-Sockel simuliert.

Ich verwende ein M29F800FT, daher ist die korrekte Geräteeinstellung M29F800FT@TSOP48, und die Befehlszeile zum Flashen der obigen Binärdatei lautet:

minipro --device 'M29F800FT@TSOP48' --write flash.bin 

Das Flash-ROM wird gelöscht (es ist also nicht nötig, es vorher zu löschen), das Image darauf geschrieben und dann in einem letzten Schritt verifiziert.

ROM-Austausch

Das Flash-ROM ist ein Drop-in-Ersatz für das Amiga-ROM. Ich habe das Original-ROM vorsichtig mit einem Schraubendreher mit breiter Klinge aus dem Sockel entfernt.

Danach habe ich den Flash-ROM-Adapter in den Sockel gesteckt. Die richtige Ausrichtung ist entscheidend. Der Adapter wird so eingesetzt, dass die Stiftleiste die gleiche Ausrichtung hat wie die Kerbe des Original-ROMs.

Manchmal sind die Löcher des Sockels zu klein, um die Pins des Adapters aufzunehmen. In diesem Fall ist die einzige Möglichkeit, entweder den Sockel auszutauschen oder ein EPROM zu verwenden.

Wenn du ein Amiga 500 Rev. 5 Mainboard besitzt und mit dem neuen Flash-ROM zufällige Abstürze erlebst, musst du möglicherweise Widerstände in die Adressleitungen einbauen. Dies kann entweder über Widerstandsnetzwerke erfolgen oder durch die Verwendung eines Amiga 500 EPROM-Adapters, der in einigen Amiga-Shops verkauft wird.

Wie man Amiga-EPROMs brennt

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.

#Werbung? Dieser Blog ist werbefrei. Dargestellte Produkte wurden von mir selbst gekauft und bezahlt.
Freitag, 29. Oktober 2021