Dandanator

Einen ZX Dandanator Mini bauen

Gewöhnliche Audiokassetten waren der übliche Weg, um Software in den ZX Spectrum zu laden. Es gab zwar auch Diskettenlaufwerk-Erweiterungen und Sinclairs proprietäre Microdrive-Lösung, aber Kassetten gab es überall, sie waren billig und Kassettenrekorder waren in so ziemlich jedem Haushalt zu finden.

Allerdings waren sie ziemlich unkomfortabel. Kassetten waren langsam. Es dauerte etliche Minuten, bis ein Spiel geladen war. Bei einer “Sammlung” von mehreren Spielen auf einer Kassette musste man zuerst an die richtige Stelle spulen, was gar nicht so einfach war, da sich der Krach des Datenstroms für uns Menschen ziemlich gleich anhört. Man konnte sich zwar die Zählerstände am Cassettenrekorder notieren, aber die Zähler waren nicht genormt, der Index damit an ein bestimmtes Modell gebunden.

Als ich schließlich meinen Amiga mit Diskettenlaufwerk bekam, hatte ich die Zeiten, wo ich mit Kassetten hantieren musste, schnell vergessen.

Heute besitze ich ein paar ZX Spectrums, aber keinen Kassettenrekorder mehr. Um Software in den Rechner zu laden, verwende ich normalerweise die Kopfhörerbuchse meines PCs und tzxplay. Aber es gibt einen eleganteren Weg. Der ZX Dandanator Mini von Dandare ist eine Erweiterung mit 512KB Flash-Speicher, wo die Lieblingsspiele gespeichert werden können. Ein Boot-Menü erlaubt es, eines dieser Spiele auszuwählen. Es wird dann direkt in den Speicher geladen. Der Dandanator bietet außerdem einen Kempston-kompatiblen Joystick-Anschluss.

Beim Zusammenbau meines ZX Dandanator Mini stellte ich fest, dass die Dokumentation des Projekts ein paar Fragen offenließ. Ich hoffe, mein Blogartikel wird anderen beim Nachbau helfen.

Teile

Glücklicherweise ist die Stückliste des Dandanator sehr übersichtlich, und alle Komponenten (mit Ausnahme des Edge Connectors) sind leicht erhältlich.

  • 1x GAL 22V10 (+ DIP20 Sockel)
  • 1x PIC 16F1826-I/P (+ DIP18 Sockel)
  • 1x SST 39SF040 Flash ROM (+ PLCC32 Sockel)
  • 1x 1N4148 (TH)
  • 2x 10kΩ Widerstände (TH)
  • 5x 100nF Keramikkondensatoren (TH)
  • 1x D-Sub Stecker, 9-polig männlich, abgewinkelt, Europa-Bauform (z.B. dieser hier)
  • 2x Stiftleisten, 2-polig
  • 1x Jumper
  • 2x Taster, 6 mm hoch (17 mm für das 3D-gedruckte Gehäuse)
  • 1x Platine (Gerber-Dateien sind hier)
  • 1x ZX Spectrum Edge Connector (zu finden in Retro-Shops, Online-Marktplätzen oder selber basteln)
  • 1x 3D-gedrucktes Gehäuse (optional)

Man braucht einen Programmer, der in der Lage ist, den PIC, das GAL und das Flash-ROM zu flashen (z. B. der XGecu TL-866II Plus mit PLCC32 Adapter). Ich empfehle außerdem eine gute PLCC-Zieh-Zange.

Klassische GALs werden nicht mehr produziert, können aber immer noch als NOS-Teile auf Online-Marktplätzen bestellt werden. Ein Ersatz, der noch produziert wird, ist der Atmel ATF22V10C-10PU. Dann braucht man allerdings zusätzlich ein 3,3kΩ 6-Pin Widerstandsnetzwerk (mehr dazu unten).

Zusammenbau

Der Zusammenbau ist unkompliziert. Man fängt mit den flachsten Komponenten an und arbeitet sich zu den höchsten vor. Es gibt keine SMD-Komponenten, daher sollte selbst ein Lötanfänger keine Probleme haben.

Stelle sicher, dass die Sockel richtig ausgerichtet sind. Leider gibt es auf dem Bestückungsdruck keine Markierungen für Pin 1 der beiden DIP-Sockel. Sie sollten mit den Kerben in die Richtung der Taster ausgerichtet werden, wie auf dem Foto zu sehen ist. Der PLCC-Sockel sollte mit dem Umriss auf dem Bestückungsdruck übereinstimmen.

Der Edge Connector ist normalerweise dafür gedacht, aufrecht eingelötet zu werden, nicht an die Kante der Platine. Die Pins müssen also zuerst auf beiden Seiten nach innen gebogen werden, bis die Steckleiste mittig sitzt und alle Pins die Pads der Platine berühren. Achte auch darauf, den Anschluss auf die richtige Seite der Platine zu löten, das ist die mit den kurzen Pads. Der Anschluss auf der anderen Seite ist für weitere Erweiterungen gedacht, wie z. B. ein Joystick-Interface, aber man könnte sogar mehrere Dandanatoren zusammenstecken.

Wenn du beabsichtigst, das 3D-gedruckte Gehäuse zu verwenden, lass eine Lücke von etwa 2 mm zwischen der Platinenkante und dem Stecker.

Einige der Pads sind nahe an der Randsteckleiste auf der Rückseite. Es passiert leicht, beim Löten ein paar Tropfen Lot auf die Pads zu kleckern. Mit einem Stück Kapton-Klebeband kann man sie leicht schützen.

Ein Problem mit dem ATF22V10C ist, dass er keine internen Pull-Ups an den Eingängen hat. Das bedeutet, dass die Eingänge floaten, wenn kein Joystick angeschlossen ist. Das führt zu Problemen. Auf meinem System wurde immer sofort das erste Spiel in der Liste gestartet, wenn kein Joystick angeschlossen war. Eine mögliche Lösung ist, ein Widerstandsnetzwerk auf die Unterseite zu löten. Die Widerstände werden mit Pin 8, 9, 10, 11 und 13 des ATF22V10C verbunden. Der gemeinsame Bus wird an Pin 24 gelötet. Achte darauf, benachbarte Pins nicht zu verbinden oder kurzzuschließen.

Dieses Problem sollte mit dem ATF22V10B nicht auftreten, aber zum Zeitpunkt des Schreibens war diese Variante entweder ausverkauft oder absurd teuer.

Obwohl dieses Problem bei älteren GALs wahrscheinlich nicht auftritt, empfehlen die Hersteller dennoch, Eingangs-Pins nicht offen zu lassen. Meiner Meinung nach hätten die Pull-Up-Widerstände ein Teil des Dandanator-Designs sein müssen.

Im letzten Schritt reinigt man die Platine und überprüft sie auf Lötbrücken und andere Fehler. Ein Kurzschluss kann den Spannungswandler im ZX Spectrum zerstören, was relativ schwierig zu reparieren ist.

Der “Joystick”-Jumper ist dafür da, den Joystick-Port zu aktivieren. Er sollte geschlossen werden, wenn kein anderes Joystick-Interface verwendet wird. Der “Serial Pins”-Jumper scheint für die In-Circuit-Programmierung gedacht zu sein und sollte nicht geschlossen werden. (Es geht nichts kaputt, wenn du ihn versehentlich schließt, aber dann wird der Joystick permanent nach rechts gedrückt.)

Wenn der Zusammenbau abgeschlossen ist, ist der nächste Schritt, die Chips zu programmieren. Sie werden alle unterschiedlich programmiert.

Die Chips flashen

  • GAL: Die Fusemap kann hier heruntergeladen werden. Wenn du ein ATF22V10 und den XGecu Programmer verwendest, stelle sicher, dass du die (UES) Variante als Chiptyp auswählst.
  • PIC: Eine initiale Firmware kann hier heruntergeladen werden. Ich habe versucht, sie mit der minipro Software zu flashen, aber bekam so keinen funktionierenden PIC. Letztendlich habe ich die Original-Software von XGecu verwendet.
  • Flash ROM: Das Flash-ROM enthält die Spiele und auch Pokes. Die Image-Datei wird durch ein ROM Assembler Tool generiert.

Der ROM Assembler ist in Java geschrieben, läuft also auf jedem modernen Betriebssystem. Wenn du dich mit Java auskennst, kannst du die neueste Version leicht selbst aus dem Quellcode kompilieren. Du kannst auch eine jar-Datei von der Dandanator Download-Seite herunterladen und sie mit dem Befehl java -jar dandanator-mini-*.jar ausführen.

Die GUI des ROM Assemblers ist ziemlich selbsterklärend. Du kannst einfach TAP-, SNA-, Z80- und POK-Dateien deiner Lieblingsspiele per Drag&Drop hineinziehen, bis der Flash-Speicher voll ist. In den Einstellungen kannst du die Schriftart und Sprache ändern und sogar ein individuelles Hintergrundbild verwenden.

Viele Spiele finden sich bei World of Spectrum. Eine umfangreiche Sammlung von POK-Dateien gibt es hier.

Wenn du deine Lieblingsspiele zusammengestellt hast, erstelle ein ROM-Image und schreibe es auf das Flash-ROM.

Spielen wir!

Der Dandanator wird an den Erweiterungsport des ZX Spectrum angeschlossen. Denke daran, den Computer zuerst vom Strom zu trennen.

Schalte nun deinen Speccy ein und drücke den rechten Knopf am Dandanator, um das Hauptmenü zu erreichen.

Du kannst ein Spiel auswählen, entweder indem du den Joystick benutzt oder die entsprechende Taste drückst, dann die anzuwendenden Pokes auswählst und schließlich das Spiel startest.

Wenn du den Dandanator zum ersten Mal verwendest, solltest du den Speccy ausschalten, dann beide Tasten gedrückt zu halten und ihn wieder einschalten. Der Dandanator flasht danach die neueste Firmware-Version auf den PIC.

Der rechte Knopf bringt dich immer zurück ins Hauptmenü. Der Rechner muss nicht mehr zurückgesetzt werden.