Amiga 1200 Maustasten-Fix

Während ich einen Amiga 1200 restauriert habe, ist mir aufgefallen, dass an diesem Rechner die rechte und mittlere Maustaste an beiden Anschlüssen nicht reagierten. Bei genauerer Untersuchung stellte sich heraus, dass es mit einer originalen Amiga-Maus funktionierte, aber mit meinem YAMI-Maus-Interface fehlschlug. Das Maus-Interface konnte jedoch nicht die Ursache sein, da es eigentlich seit Jahrzehnten zuverlässig an allen möglichen Amigas, einschließlich eines Amiga 1200, funktioniert.

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. 😉
  • Das Maus-Interface modifizieren. Für einige davon gibt es eine “gefixte” Version.
  • Ein “FixRMB”-Tool verwenden. Dieses Tool muss jedoch zuerst gestartet werden, funktioniert also nicht, um das Bootmenü zu erreichen oder in Spielen. Es erfordert auch ein Maus-Interface mit internen Pull-up-Widerständen. (YAMI hat diese zum Beispiel nicht.)
  • Einige sagten, sie hätten Glück mit dem Austausch des Paula-Chips gehabt, aber das erfordert Erfahrung im Löten.

Keine dieser Optionen ist für mich wirklich ansprechend. Ich möchte, dass dieser Amiga wie alle anderen funktioniert. Also habe ich versucht herauszufinden, was hier das eigentliche Problem ist und wie man es richtig beheben kann.

Die mittlere und rechte Maustaste sind mit den POT-Pins von Paula verbunden. Diese Eingänge sind eigentlich für analoge Joysticks gedacht und bieten einen sehr einfachen ADC. Der analoge Joystick lädt einen Kondensator auf, während ein Zähler in Paula die Zeit misst. Sobald die Spannung des Kondensators ein bestimmtes Niveau erreicht, wird der Timer gestoppt. Die Position des Joysticks kann anhand der Zeit bewertet werden, die zum Aufladen des Kondensators benötigt wurde.

Es gibt aber auch einen digitalen Modus, der für Maustasten verwendet wird. Wenn dieser aktiviert ist, zieht ein Widerstand in Paula die POT-Leitung hoch. Wenn die Maustaste gedrückt wird, zieht der Mausschalter die Leitung auf LOW, was dann aus den Paula-Registern ausgelesen werden kann.

Als eine originale Maus angeschlossen war, wurde die POT-Leitung bei gedrückter Taste auf 0,9 V gezogen. Als jedoch das Maus-Interface angeschlossen wurde, wurde die Leitung nur auf 1,1 V gezogen. Es scheint ein winziger Unterschied zu sein, aber für diesen Paula-Chip macht es bereits den Unterschied zwischen “Taste gedrückt” und “Taste losgelassen”.

Nur eine bestimmte Charge von Paula-Chips scheint betroffen zu sein. Das ist der Grund, warum dieses Problem nicht bei allen Amiga 1200 auftritt, sondern vermutlich nur bei einigen 1D.4-Boards. Dies ist auch der Grund, warum der Austausch des Paula-Chips das Problem behebt. Auf meinem Board ist ein “CSG 8364R7PL” mit dem Datumscode 4193 verbaut. Ich habe auch von einem weiteren Fall mit einem Paula-Chip aus derselben Produktionswoche gehört.

Nächste Frage: Warum scheinen nur Amiga 1200-Modelle von diesem Problem betroffen zu sein, obwohl es wahrscheinlich ist, dass die betroffene Paula-Charge auch in der Amiga 4000-Produktion verwendet wurde? Wenn man die Schaltpläne beider Maschinen vergleicht, gibt es einen bemerkenswerten Unterschied. Dies ist ein vereinfachter Auszug des Joystick- oder Mausanschlusses:

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

Der Unterschied liegt in den mit einem roten Kreis markierten Teilen. Sie werden als EMI-Filter verwendet. Für den Amiga 4000 hat Commodore dort Ferrite verwendet. Es ist im Grunde nur ein Draht in einer Ferritperle, was bei niedrigen Frequenzen einen Widerstand von 0 Ω ergibt. Im Amiga 1200 (und Amiga 600) verwendete Commodore jedoch Standard-68-Ω-Widerstände, vermutlich um Kosten zu sparen.

Zusammen mit dem Pull-up-Widerstand in Paula arbeitet dieser Widerstand als Spannungsteiler. Der Schalter in einer klassischen Amiga-Maus zieht diesen Teiler auf Masse, was 0,9 V am POT-Eingang ergibt, 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

Das Maus-Interface hat jedoch keinen echten Schalter, sondern einen logischen Ausgang. Zum Beispiel liefert der PIC16F84, der im YAMI-Interface verwendet wird, eine LOW-Spannung von 0,6 V. Nun liefert der Spannungsteiler 1,1 V am POT-Eingang, was von Paula als HIGH interpretiert wird.

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 konnte nicht herausfinden, ob der Pull-up-Widerstand in Paula in dieser Charge einen niedrigeren Widerstand hat oder ob es einen anderen Schwellenwert für die Erkennung von LOW-Pegeln gibt. 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 die SMD 1206-Ferrite ersetzt, die 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.

Dies ist nur eine kleine Änderung an der Hardware, die auch von Löt-Anfängern durchgeführt werden könnte (zumindest eher, als einen PLCC-Chip auszulöten). Nach dieser Änderung funktionierte auch das Maus-Interface.

Achte darauf, die Widerstände durch Ferrite zu ersetzen, nicht die Kondensatoren daneben!

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!

PPS: Commodore hat den gleichen Trick bei Amiga 600-Rechnern angewendet. Wenn du also Probleme mit der rechten Maustaste an deinem A600 hast, ist es einen Versuch wert, E353R, E354R, E363R und E364R zu ersetzen.