Lecture des données de disquettes à partir d'un disque ZX Spectrum Swift

Jan 15 2021

À l'époque, nous avions un swiftdisk à six mots, nous étions en avance sur le jeu sur notre speccy nous permettant de nous des disquettes de 3,5 pouces. Voir:

  • 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

Je vois les spécifications matérielles complètes et même la rom est disponible en ligne sur le lien hardware.speccy.org ci-dessus, ce qui est assez incroyable.

Quelqu'un a-t-il une idée du format de disque utilisé (c'était un instantané de toute la mémoire) et comment nos anciennes disquettes pourraient être numérisées pour le monde rétro moderne. Peut-être pourrions-nous les convertir au format FDI ?

Motivation:

Ce serait plutôt bien d'essayer de télécharger notre jeu jamais sorti Galactic Patrol comme nous l'avons fait avec StarBlade . Toutes mes excuses pour avoir rendu les vagues ennemies trop méchantes là-bas! J'aurais pu faire plus de tests de jeu, mais nous étions tous les deux encore à l'école.

Cela a fonctionné en couleur `` pleine '' en utilisant le schéma de changement d'écran rapide que mon frère a conçu et qui est mentionné ici en cas de crash .

Réponses

3 Tommy Jan 16 2021 at 04:11

Je n'ai pas trouvé d'informations techniques ou d'émulateur existant, mais via vos liens, j'ai trouvé cette image haute résolution de la carte de l'interface .

De là, je remarque les choses suivantes:

  • le contrôleur de disque est un WD1770, c'est le gros sur la gauche;
  • les deux grandes puces sur la moitié droite sous le connecteur de bord sont une RAM de 8 ko et une EPROM; et
  • tout le reste qui est visible est la logique de la série 74.

C'est une valeur sûre basée sur l'architecture du Spectrum que le bouton d'interruption bascule dans la ROM intégrée et déclenche une NMI.

Les images ROM liées ont une taille de 32 ko et 16 ko, mais la première semble juste être des données de 16 ko copiées deux fois, vous pouvez également ajouter que l'EPROM est de 16 ko, auquel cas il pourrait y avoir des conjectures pour savoir quand et où ces 8 ko de RAM apparaissent .

J'ai trouvé de vieilles mentions dans comp.sys.sinclair selon lesquelles l'émulation Microdrive ajoutée à une version ultérieure était en partie basée sur le matériel, mais semble être venue avec une révision de la carte. Ainsi, un auteur d'émulateur commencerait probablement avec l'ancienne EPROM dans l'espoir que le matériel supplémentaire ne soit pas encore présent.

Sinon, la bonne nouvelle est que le contrôleur de disque est une pièce extrêmement standard qui ne fait que l'encodage IBM vanille, et sur la base de la capacité de disquette annoncée de "treize jeux de 48 Ko par disque", vous pouvez supposer que le format physique des données sur le disque est MFM (c.-à-d. PC ordinaire «double densité»).

Donc: vous pourrez peut- être créer une image de votre disque à l'aide d'un lecteur de disque USB ordinaire (à moins que vous n'en trouviez un qui ne prend en charge que les disquettes haute densité) car MFM est essentiellement la seule chose qu'ils prennent en charge - mais ils sont souvent limités à des secteurs de 512 octets avec numérotation fixe donc ce n'est pas garanti. Cela vaut peut-être la peine d'essayer avant de chercher une solution moins courante. Cette page relative à MSX fournit un guide pour Linux et macOS bien que la section Windows soit vide. Un peu plus de recherche pourrait être nécessaire là-bas.

À défaut, recherchez des solutions capables de créer des images de disquettes pour une machine comme Amstrad CPC, car celles-ci doivent gérer différentes tailles de secteur et adressages, et les formats de fichiers communs liés au CPC peuvent conserver toutes ces informations. Si vous avez un PC suffisamment vieux pour avoir un contrôleur et un lecteur de disquette pré-USB et un système d'exploitation comme DOS qui donne au logiciel un accès illimité au contrôleur, cela devrait faire l'affaire. Ou des contrôleurs de disque de bas niveau existent maintenant pour exactement ce problème, comme le Greaseweazle mentionné par scruss, le Kryoflux et d'autres.

À partir d'un émulateur Spectrum fonctionnel, il ne devrait pas être trop difficile d'ajouter l'interface du disque Swift et de lire votre disquette.

Le logiciel qui doit écrire sur un WD1770 est très connu, vous pouvez donc isoler ces adresses assez facilement, et à peu près la première chose que la routine NMI devra faire est de sauvegarder l'affichage actuel afin que vous puissiez probablement comprendre le Question RAM sans trop de dilemme. À ce stade, cela pourrait être aussi simple que de simplement brancher votre image disque.

La plupart du temps, lorsque ces interfaces légèrement plus obscures ne sont pas émulées, c'est simplement parce qu'aucune donnée de test n'est disponible; il est très possible que vous puissiez intéresser un auteur existant simplement en ayant une image disque. Sinon, un émulateur Spectrum est facile à installer, donc quelqu'un comme moi qui a le type de code généralement correct devrait être en mesure de vous aider.

Alternativement, comme ma recherche n'était pas particulièrement approfondie, vous pourriez constater que la chose est déjà émulée - dans ce cas, veuillez me le faire savoir afin que je puisse modifier 90% de cette réponse.

2 Spektre Jan 16 2021 at 16:25

On dirait qu'il utilise WD1770 Je ne suis pas familier avec lui, mais vérifie d'abord si WD1770 est compatible avec le format IBM. Si oui, vous pouvez lire les disques directement sur PC ... Sinon, vous avez besoin d'un matériel capable de lire le disque .

Donc, dans le cas d'une compatibilité PC, il vous suffit de l'imaginer en utilisant un accès direct au secteur en C ++ (ou tout autre langage ou utilitaire) au lieu du format de fichier. Après avoir obtenu l'image binaire de la disquette (dans un sens ou dans l'autre), deux options s'offrent à vous:

  1. émuler FDC

    vous devez donc avoir un émulateur capable d'émuler votre interface FDC ou d'ajouter une telle fonctionnalité à un code open source.

    Dans votre dernier lien se trouvent des images ROM et également des circuits (mais celui-ci est illisible), il est donc possible de l'émuler en inversant les circuits ... J'ai déjà fait cela pour mon émulateur et D40 / D80 FDC basé sur WD2797 . Cependant, cela n'est facilement faisable que pour les émulateurs qui fonctionnent sur une résolution de synchronisation MC (cycle machine) (comme le mien), sinon le FDC ne doit être piraté qu'en se connectant à la condition HW et SW en contournant le code Z80 et en injectant du code / des opérations FDC à la place (que C'est ainsi que la plupart des émulateurs le font, mais ce n'est pas 100% compatible et les chargeurs personnalisés peuvent ne pas fonctionner) ce que personne ne peut faire sans une connaissance approfondie du fonctionnement du FDC ciblé.

  2. extraire les fichiers

    ou vous contournez complètement le FDC et extrayez les fichiers non compressés de l'image dans un format lisible par des émulateurs comme *.tap. Dans le cas où vous partagez des images (mieux avec la description des fichiers et de leur durée), je serais heureux d'essayer de créer un convertisseur win32 qui ferait cela pour vous.

    comme les fichiers ne sont que des instantanés, cela pourrait être votre meilleure option. Idéalement, si vous avez également accès au matériel, vous pouvez créer un modèle de mémoire spécifique et l'enregistrer sur une disquette afin que l'inffering du système de fichiers soit plus facile ... par exemple, remplissez le 128K (partie RAM) avec des adresses 32 bits (valeur incrémentale) afin que nous peut rassembler les secteurs dans le bon ordre, puis le faire correspondre à FAT s'il est utilisé ...