Lesen von Daten von Disketten von einer ZX Spectrum Swift-Diskette

Jan 15 2021

Damals hatten wir eine Sechs-Wörter-Swiftdisk, die wir auf unserem Speccy vor dem Spiel hatten und uns 3,5-Zoll-Disketten erlaubten. Sehen:

  • https://www.worthpoint.com/worthopedia/swift-disc-interface-zx-spectrum-540379389
  • http://www.crashonline.org.uk/44/swiftdisk.htm
  • https://spectrumcomputing.co.uk/index.php?cat=96&id=1000412
  • https://hardware.speccy.org/hardware/Swift_Disc-Sixword-i.html

Ich sehe die vollständige Hardwarespezifikation und sogar die Rom ist online unter dem obigen Link hardware.speccy.org verfügbar, was ziemlich erstaunlich ist.

Hat jemand eine Idee, welches Festplattenformat verwendet wurde (es war eine Momentaufnahme des gesamten Speichers) und wie unsere alten Disketten für die moderne Retro-Welt digitalisiert werden könnten. Möglicherweise könnten wir sie in das FDI-Format konvertieren ?

Motivation:

Es wäre schön zu versuchen, unser nie veröffentlichtes Spiel Galactic Patrol hochzuladen, wie wir es mit StarBlade getan haben . Entschuldigung, dass Sie die feindlichen Wellen dort zu böse gemacht haben! Hätte noch ein bisschen spielen können, aber wir waren beide noch in der Schule.

Dies lief in 'Vollfarbe' unter Verwendung des von meinem Bruder entwickelten Schnellbildschirm-Schaltschemas, das hier im Absturz erwähnt wird .

Antworten

3 Tommy Jan 16 2021 at 04:11

Ich konnte keine technischen Informationen oder einen vorhandenen Emulator finden, aber über Ihre Links habe ich dieses hochauflösende Bild der Benutzeroberfläche gefunden .

Von dort bemerke ich folgende Dinge:

  • Der Festplattencontroller ist ein WD1770, das ist der große auf der linken Seite.
  • Die beiden großen Chips auf der rechten Seite, beide in der Hälfte unter dem Edge-Anschluss, sind ein 8-KB-RAM und ein EPROM. und
  • Alles andere, was sichtbar ist, ist die Logik der 74er-Serie.

Basierend auf der Architektur des Spektrums ist es sicher, dass die Interrupt-Taste im integrierten ROM umschaltet und ein NMI auslöst.

Die verknüpften ROM-Images sind 32 KB und 16 KB groß, aber die ersteren scheinen nur 16 KB Daten zu sein, die zweimal kopiert wurden. Sie können auch hinzufügen, dass das EPROM 16 KB groß ist. In diesem Fall kann es einige Vermutungen geben, wann und wo diese 8 KB RAM angezeigt werden .

Ich habe in comp.sys.sinclair alte Erwähnungen gefunden, dass die einer späteren Version hinzugefügte Microdrive-Emulation teilweise hardwarebasiert war, aber anscheinend mit einer Board-Revision geliefert wurde. Ein Emulatorautor würde also wahrscheinlich mit dem älteren EPROM beginnen, in der Hoffnung, dass die zusätzliche Hardware noch nicht vorhanden war.

Ansonsten ist die gute Nachricht, dass der Festplattencontroller ein extrem standardmäßiger Teil ist, der nur Vanille-IBM-Codierung ausführt. Basierend auf der angegebenen Diskettenkapazität von "dreizehn 48-KB-Spielen pro Festplatte" können Sie davon ausgehen, dass das physische Format der Daten auf der Festplatte vorliegt MFM (dh regulärer PC 'Double Density').

Also: Möglicherweise können Sie Ihre Festplatte mit einem einfachen USB-Laufwerk abbilden (es sei denn, Sie finden eines, das nur Disketten mit hoher Dichte unterstützt), da MFM im Wesentlichen das einzige ist, was sie unterstützen - aber sie sind häufig auf 512-Byte-Sektoren mit beschränkt feste Nummerierung, daher ist dies nicht garantiert. Könnte einen Versuch wert sein, bevor Sie sich nach einer weniger verbreiteten Lösung umsehen. Diese MSX-bezogene Seite enthält eine Anleitung für Linux und MacOS, obwohl der Windows-Abschnitt leer ist. Dort könnte etwas mehr Forschung notwendig sein.

Andernfalls sollten Sie nach Lösungen suchen, mit denen Disketten für einen Computer wie den Amstrad CPC abgebildet werden können, da diese unterschiedliche Sektorgrößen und Adressierungen verarbeiten sollten. Die gängigen CPC-bezogenen Dateiformate können alle diese Informationen beibehalten. Wenn Sie einen PC haben, der alt genug ist, um einen Pre-USB-Diskettencontroller und ein Laufwerk sowie ein Betriebssystem wie DOS zu haben, das Software uneingeschränkten Zugriff auf den Controller ermöglicht, sollte dies den Trick tun. Für genau dieses Problem gibt es jetzt auch Low-Level-Festplattencontroller, wie das von Scruss, dem Kryoflux und anderen erwähnte Greaseweazle.

Ausgehend von einem funktionierenden Spectrum-Emulator sollte es dann keine allzu große Herausforderung sein, die Swift-Disc-Oberfläche hinzuzufügen und Ihre Diskette zu lesen.

Welche Software auf einen WD1770 schreiben sollte, ist sehr bekannt, sodass Sie diese Adressen ziemlich einfach isolieren können. Die NMI-Routine muss als Erstes die aktuelle Anzeige sichern, damit Sie wahrscheinlich die herausfinden können RAM-Frage ohne zu viel Dilemma. An diesem Punkt ist es möglicherweise so einfach wie das Einstecken Ihres Disk-Images.

In den meisten Fällen, in denen diese etwas undurchsichtigeren Schnittstellen nicht emuliert werden, liegt dies nur daran, dass keine Testdaten verfügbar sind. Es ist sehr wahrscheinlich, dass Sie einen vorhandenen Autor nur durch ein Disk-Image interessieren können. Andernfalls ist ein Spectrum-Emulator leicht zu aktivieren, sodass jemand wie ich, der über die allgemein korrekte Art von Code verfügt, helfen kann.

Da meine Suche nicht besonders gründlich war, stellen Sie möglicherweise fest, dass das Objekt bereits emuliert ist. In diesem Fall teilen Sie mir dies bitte mit, damit ich 90% dieser Antwort ändern kann.

2 Spektre Jan 16 2021 at 16:25

Es sieht so aus, als würde es WD1770 verwenden. Ich bin nicht damit vertraut, überprüfe aber zuerst, ob WD1770 mit dem IBM-Format kompatibel ist. Wenn ja, können Sie die Discs direkt auf dem PC lesen ... Wenn nicht, benötigen Sie HW, das die Disc lesen kann .

Wenn der PC kompatibel ist, können Sie ihn einfach mit direktem Sektorzugriff in C ++ (oder einer anderen Sprache oder einem anderen Dienstprogramm) anstelle des Dateiformats abbilden. Nachdem Sie das Binärbild der Diskette erhalten haben (auf die eine oder andere Weise), gibt es zwei Möglichkeiten:

  1. FDC emulieren

    Sie benötigen also einen Emulator, der Ihre FDC-Schnittstelle emulieren oder diese Funktionalität einem Open-Source-Code hinzufügen kann.

    In Ihrem letzten Link befinden sich ROM-Images und auch eine Schaltung (aber diese ist nicht lesbar), sodass es möglich sein kann, dies durch Umkehren der Schaltung zu emulieren ... Ich habe dies zuvor für meinen Emulator und D40 / D80 FDC basierend auf WD2797 getan . Dies ist jedoch nur für Emulatoren möglich, die mit einer MC-Zeitauflösung (Maschinenzyklus) (wie meiner) ausgeführt werden. Andernfalls muss der FDC nur gehackt werden, indem der HW- und SW-Zustand umgangen wird, indem der Z80-Code umgangen wird und stattdessen FDC-Code / -Operationen eingefügt werden So machen es die meisten Emulatoren, aber dies ist nicht 100% kompatibel und benutzerdefinierte Lader und andere Dinge funktionieren möglicherweise nicht. Dies kann niemand ohne tiefes Wissen über die gezielten FDC-Arbeiten tun.

  2. Dateien extrahieren

    oder Sie umgehen den FDC vollständig und extrahieren die nicht komprimierten Dateien aus dem Bild in ein Format, das von Emulatoren wie gelesen werden kann *.tap. Falls Sie einige Bilder teilen (am besten mit Beschreibung, welche Dateien und wie lange sie enthalten sind), würde ich gerne versuchen, einen Win32-Konverter zu erstellen, der dies für Sie erledigt.

    Da es sich bei den Dateien nur um Schnappschüsse handelt, ist dies möglicherweise die beste Option. Wenn Sie auch Zugriff auf die Hardware haben, können Sie im Idealfall ein bestimmtes Speichermuster erstellen und auf Diskette speichern, damit das Inferieren des Dateisystems einfacher wird. Füllen Sie beispielsweise die 128 KB (RAM-Teil) mit 32-Bit-Adressen (inkrementeller Wert), damit wir kann die Sektoren in der richtigen Reihenfolge zusammenführen und sie dann mit FAT abgleichen, wenn sie verwendet werden ...