A600

Amiga 1200 Maustasten-Fix

Während der Reparatur eines Amiga 1200 ist mir aufgefallen, dass an diesem Rechner an beiden Ports die rechte und mittlere Maustaste nicht reagierte. Mit einer originalen Amiga-Maus ging es, mit meinem YAMI-Mausadapter dagegen nicht. Der Mausadapter konnte aber nicht die Ursache sein, denn er funktioniert seit Jahrzehnten zuverlässig an allen möglichen Amigas, einschließlich einem anderen Amiga 1200.

Das Problem ist der Community bereits bekannt und scheint auch andere Maus-Interfaces zu betreffen. Die Lösungsansätze, die ich bisher finden konnte, waren:

  • Einfach die originale Amiga-Maus verwenden. 😉 Trotz aller Liebe zu alter Hardware: die Zeit der Kugelmäuse ist vorbei.
  • Den Mausadapter modifizieren. Für einige gibt es sogar eine “gefixte” Version.
  • Ein “FixRMB”-Tool verwenden. Das Tool muss jedoch erst gestartet werden, funktioniert also nicht in Spielen oder im Bootmenü. Es benötigt außerdem einen Mausadapter mit internen Pull-up-Widerständen. YAMI hat diese zum Beispiel nicht.
  • Die Paula tauschen. Die Lötarbeiten erfordern Erfahrung und passendes Equipment. Außerdem ist es schade um die ansonsten funktionstüchtige Paula.

Keine dieser Optionen spricht mich wirklich an. Ich möchte, dass dieser Amiga wie alle anderen funktioniert. Also ging ich auf Ursachenforschung.

Die mittlere und rechte Maustaste sind mit den POT-Pins der Paula verbunden. Diese Eingänge sind eigentlich für analoge Joysticks gedacht und verwenden einen sehr einfachen ADC. Der analoge Joystick lädt einen Kondensator auf, während ein Zähler in der Paula die Zeit misst. Der Ladevorgang dauert je nach Position des Joysticks unterschiedlich lange. Sobald ein bestimmtes Spannungsniveau erreicht ist, wird der Zähler gestoppt. Der Zählerstand gibt die Ladedauer des Kondensators und damit die Position des Joysticks wieder.

Für Maustasten gibt es einen digitalen Modus. Hier zieht ein eingebauter Pull-Up-Widerstand die POT-Leitung auf High. Sobald eine Maustaste gedrückt wird, wird die Leitung auf Low gezogen. Das Ergebnis kann direkt aus den Paula-Registern ausgelesen werden.

Mit einer originalen Maus lag bei diesem Amiga an der POT-Leitung bei gedrückter Taste 0,9 V an. Mit dem Mausadapter waren es bloß 1,1 V. Das scheint nur ein geringfügiger Unterschied zu sein, aber er reichte bei diesem Paula-Chip bereits für “Taste gedrückt” und “Taste losgelassen”.

Es scheint nur eine bestimmte Charge betroffen zu sein. Das ist der Grund, warum dieses Problem nicht bei allen Amiga 1200 auftritt, sondern vermutlich nur bei einigen 1D.4-Boards. Das wäre außerdem eine Erklärung dafür, weshalb der Austausch des Chips das Problem behebt. Auf meinem Board ist ein “CSG 8364R7PL” mit dem Datumscode 4193 verbaut. In einem Forum fand ich einen weiteren Fall mit einem Paula-Chip aus derselben Produktionswoche.

Jetzt kommt die spannende Frage: Warum scheint das Problem nur bei Amiga 1200-Modellen aufzutreten, obwohl die betroffene Paula-Charge wahrscheinlich auch in der Amiga 4000-Produktion verwendet wurde?

Wenn man die Schaltpläne beider Maschinen vergleicht, gibt es einen kleinen, aber wichtigen Unterschied. Dies ist ein vereinfachtes Schema des Joystick- oder Mausanschlusses beider Modelle:

SVG Picture created as paula-pot.svg date 2022/10/10 11:01:53Picture generated by Eeschema-SVG112233445566778899POTYPOTYPOTXPOTX

Der wesentliche Unterschied liegt in den rot umkreisten Bauteilen. Im Amiga 4000 hat Commodore dort EMI-Filter verbaut. Im Grunde sind sie nichts weiter als ein bloßer Draht in einem Ferrit. Sie filtern hohe Frequenzen heraus, wirken bei niedrigen Frequenzen (wie einer Maustaste) aber wie ein Widerstand von 0 Ω.

Im Amiga 1200 und Amiga 600 verbaute Commodore hier 68 Ω-Widerstände, vermutlich um die Produktionskosten für die Low-End-Modelle zu senken. (Beim CD³² kehrte Commodore interessanterweise wieder zu Ferriten zurück.)

Wie wirkt sich dieser Widerstand aus? Zusammen mit dem in der Paula eingebauten Pull-up-Widerstand ergibt er einen Spannungsteiler. Der Schalter in einer klassischen Amiga-Maus zieht diesen Teiler auf Masse, was 0,9 V am POT-Eingang ergibt. Das ist gerade genug, um als Low erkannt zu werden.

SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20Picture generated by Eeschema-SVGMouse Button68ΩPOTPaula Pullup0.9V5V0V68ΩMouse ButtonPOTPaula Pullup

Ein Mausadapter hat jedoch keine echten Schalter, sondern logische Ausgänge. Der PIC16F84, der im YAMI-Interface verwendet wird, hat zum Beispiel einen Low-Pegel von etwa 0,6 V. Der Spannungsteiler liefert dann 1,1 V am POT-Eingang, was von dieser Paula-Charge als High interpretiert wird. Die Maustaste wird nicht mehr als gedrückt erkannt.

SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20Picture generated by Eeschema-SVGMouse InterfacePaula PullupPOT68Ω5V0.6V1.1VPaula PullupPOT68ΩMouse Interface

Ich weiß nicht, ob in dieser Paula-Charge der Pull-up-Widerstand einen zu niedrigen Wert hat oder ob der Schwellenwert für Low-Pegel niedriger ist. Beides wäre möglich.

Um das Problem an meinem Amiga 1200 zu beheben, habe ich die 68-Ω-Widerstände E353R, E354R, E363R und E364R durch SMD 1206-Ferrite ersetzt, wie sie im Amiga 4000 verwendet werden. Sie sind etwas größer als die 0804-Widerstände, können aber trotzdem direkt auf die Pads gelötet werden.

Beim Amiga 600 müssen ebenfalls E353R, E354R, E363R und E364R ausgetauscht werden.

Das ist bloß eine kleine Modifikation an der Hardware, die auch mit wenig Löterfahrung durchgeführt werden kann. Jedenfalls eher, als einen PLCC-Chip auszutauschen.

Nach der Änderung funktionierte auch der Mausadapter zuverlässig an diesem Amiga.

Achte darauf, die Widerstände durch Ferrite zu ersetzen, nicht die Kondensatoren daneben! Die Widerstände sind in der Regel mit der Zahl 680 bedruckt. (Kaputt ginge zwar nichts, wenn du versehentlich die Kondensatoren tauscht, aber die rechte und mittlere Taste wären dann ständig gedrückt.)

PS: Wenn du diesen Artikel gefunden hast, weil dein Amiga ebenfalls das Problem hat, schick mir bitte den Datumscode deines Paula-Chips. Vielleicht finden wir ein Muster von “schlechten” Datumscodes. Danke!