Dandanator

Einen ZX Dandanator Mini bauen

Der Hauptweg, um Software in den ZX Spectrum zu laden, war über Audiokassetten. Es gab Diskettenlaufwerk-Erweiterungen und Sinclairs proprietäre Microdrive-Lösung, aber Audiokassetten waren billig und allgegenwärtig, und Kassettenrekorder damals in praktisch jedem Haushalt zu finden.

Der größte Nachteil war, dass es unkomfortabel war. Kassetten waren langsam. Es dauerte mehrere Minuten, bis ein Spiel geladen war. Wenn man eine “Sammlung” von mehreren Spielen auf einer Kassette hatte, musste man sie zuerst an die richtige Stelle spulen. Als ich meinen Amiga mit Diskettenlaufwerk bekam, habe ich nie wirklich auf diese Zeiten zurückgeblickt, in denen ich Audiokassetten verwenden musste.

Heute besitze ich ein paar ZX Spectrums, aber ich habe 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, in dem man seine absoluten Lieblingsspiele speichern kann. Ein Boot-Menü erlaubt es, eines dieser Spiele auszuwählen, das sofort in den Speicher geladen wird. Er bietet außerdem einen Kempston-kompatiblen Joystick-Anschluss.

Als ich anfing, meinen ZX Dandanator Mini zu bauen, stellte ich fest, dass die Dokumentation des Projekts ein paar Fragen offenließ. Ich hoffe, mein umfassender Blogartikel wird anderen helfen, ihren eigenen zu bauen.

Teile

Glücklicherweise ist die Stückliste des Dandanator ziemlich kurz, und alle Komponenten sind leicht zu finden, vielleicht mit Ausnahme der Randsteckleiste.

  • 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 6 mm Taster (17 mm hoch, wenn du das 3D-gedruckte Gehäuse verwendest)
  • 1x Platine (Gerber-Dateien sind hier)
  • 1x ZX Spectrum Randsteckleiste (zu finden in Retro-Shops, Online-Marktplätzen oder einfach DIY)
  • 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. 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 gefunden werden. Ein Ersatz, der noch produziert wird, ist der Atmel ATF22V10C-10PU. Wenn man diesen verwendet, braucht man auch 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 der Nähe der Taster ausgerichtet werden, wie auf meinem Foto zu sehen. Der PLCC-Sockel sollte mit dem Umriss auf dem Bestückungsdruck übereinstimmen.

Die Randsteckleiste ist normalerweise dafür gedacht, aufrecht eingelötet zu werden, nicht an die Kante der Platine, also musst du zuerst die Pins nach innen biegen. Wenn dies richtig gemacht ist, sollte die Randsteckleiste zentriert sitzen und alle Pins sollten 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 kannt 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 mit Pin 24 verbunden. 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 Stromwandler im Inneren des 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 sie versehentlich schließt, aber dann ist es so, als würdest du den Joystick permanent nach rechts drücken.)

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 das ergab 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 auch 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.