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 waren in praktisch jedem Haushalt zu finden.

Der Nachteil war, dass es unkomfortabel war. Kassetten sind langsam. Es dauerte mehrere Minuten, ein Spiel in die Maschine zu laden. Wenn du eine “Sammlung” von mehreren Spielen auf einer Kassette hattest, musstest du sie zuerst an die richtige Position spulen. Als ich meinen ersten 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 du deine absoluten Lieblingsspiele speichern kannst. 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)

Du brauchst 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 auch 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 du diesen verwendest, brauchst du auch ein 3,3kΩ 6-Pin Widerstandsnetzwerk. Mehr dazu unten.

Zusammenbau

Der Zusammenbau ist unkompliziert. Du fängst mit den flachsten Komponenten an und arbeitest dich 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 du kannst 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. Ein Stück Kapton-Klebeband ist ein guter Weg, um sie zu schützen.

Ein Problem mit dem ATF22V10C ist, dass er keine internen Pull-Ups an den Eingängen bietet. Das bedeutet, dass die Eingänge floaten, wenn kein Joystick angeschlossen ist, was zu Problemen führen könnte. Auf meinem System wurde das erste Spiel in der Liste immer sofort gestartet, wenn kein Joystick angeschlossen war. Eine mögliche Lösung ist es, 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 lächerlich 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 sollen.

Im letzten Schritt reinigst du die Platine und überprüfst sie auf Lötbrücken und andere Fehler. Ein Kurzschluss kann den Stromwandler im Inneren des ZX Spectrum beschädigen, was ein wenig schwierig zu reparieren ist.

Die “Joystick”-Stiftleiste ist dafür da, den Joystick-Port zu aktivieren, und sollte überbrückt werden, es sei denn, du planst, ein anderes Joystick-Interface zu verwenden. Die “Serial Pins”-Stiftleiste scheint für die In-Circuit-Programmierung da zu sein und sollte nicht überbrückt werden. (Es wird keinen Schaden anrichten, wenn du sie versehentlich überbrückst, aber es ist dann 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 anfängliche Firmware kann hier heruntergeladen werden. Ich habe versucht, sie mit der minipro Software zu flashen, konnte aber keinen funktionierenden PIC daraus erhalten. Letztendlich habe ich die Original-Software von XGecu verwendet, was gut funktionierte.
  • 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 kann hier gefunden werden.

Wenn du fertig bist, deine eigenen Lieblingsspiele zu sammeln, erstelle ein ROM-Image und schreibe es auf das Flash-ROM.

Lass uns spielen

Der Dandanator wird an den Erweiterungsport des ZX Spectrum angeschlossen. Denke daran, ihn 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 ändern und dann das Spiel starten.

Wenn du den Dandanator zum ersten Mal ausführst, wird empfohlen, den Speccy auszuschalten, dann beide Tasten gedrückt zu halten und ihn wieder einzuschalten. Der Dandanator flasht dann 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.