Lectura de datos de disquetes desde un disco ZX Spectrum Swift
En el día en que teníamos un disco rápido de seis palabras, estábamos por delante del juego en nuestra especificación, lo que nos permitía usar disquetes de 3,5 pulgadas. Ver:
- 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
Veo la especificación completa del hardware e incluso la rom está disponible en línea en el enlace hardware.speccy.org anterior, lo cual es bastante sorprendente.
¿Alguien tiene una idea de qué formato de disco se usó (era una instantánea de toda la memoria) y cómo nuestros viejos disquetes podrían digitalizarse para el mundo retro moderno? ¿Posiblemente podríamos convertirlos a formato FDI ?
Motivación:
Sería bueno intentar cargar nuestro juego Galactic Patrol, que nunca se lanzó, como lo hicimos con StarBlade . ¡Disculpas por hacer que las olas enemigas sean demasiado malvadas allí! Podría haberlo hecho con más pruebas de juego, pero los dos todavía estábamos en la escuela.
Esto se ejecutó en 'todo' color usando el esquema de cambio rápido de pantalla que ideó mi hermano y que se menciona aquí en el accidente .
Respuestas
No pude encontrar información técnica o un emulador existente, pero a través de sus enlaces encontré esta imagen de alta resolución de la placa de la interfaz .
Desde allí noto las siguientes cosas:
- el controlador de disco es un WD1770, ese es el grande de la izquierda;
- los dos chips grandes a la derecha, ambos mitades debajo del conector de borde, son una RAM de 8kb y una EPROM; y
- todo lo demás que es visible es lógica de la serie 74.
Es una apuesta segura basada en la arquitectura del Spectrum que el botón de interrupción cambia en la ROM integrada y activa una NMI.
Las imágenes de ROM vinculadas tienen un tamaño de 32 kb y 16 kb, pero la primera parece tener datos de 16 kb copiados dos veces, también puede aducir que la EPROM es de 16 kb, en cuyo caso puede haber algunas conjeturas para determinar cuándo y dónde aparecen esos 8 kb de RAM. .
Encontré menciones antiguas en comp.sys.sinclair de que la emulación Microdrive agregada a una versión posterior se basaba en parte en hardware, pero parece haber venido con una revisión de la placa. Por lo tanto, un autor de emulador probablemente comenzaría con la EPROM anterior con la esperanza de que el hardware adicional aún no estuviera presente.
De lo contrario, la buena noticia es que el controlador de disco es una parte extremadamente estándar que solo realiza la codificación básica de IBM y, según la capacidad de disquete anunciada de "trece juegos de 48kb por disco", puede asumir que el formato físico de los datos en el disco es MFM (es decir, PC normal de "doble densidad").
Entonces: es posible que pueda obtener una imagen de su disco usando una unidad de disco USB simple (a menos que encuentre una que solo admita disquetes de alta densidad) ya que MFM es esencialmente lo único que admiten, pero a menudo están restringidos a sectores de 512 bytes con numeración fija, por lo que esto no está garantizado. Sin embargo, podría valer la pena intentarlo antes de buscar una solución menos común. Esta página relacionada con MSX ofrece una guía para Linux y macOS, aunque la sección de Windows está vacía. Podría ser necesaria una pequeña investigación más allí.
De lo contrario, busque soluciones que puedan crear imágenes de disquetes para una máquina como Amstrad CPC, ya que deben manejar diferentes tamaños de sector y direcciones, y los formatos de archivo comunes relacionados con CPC pueden retener toda esa información. Si tiene una PC lo suficientemente antigua como para tener un controlador y una unidad de disquete pre-USB y un sistema operativo como DOS que le brinda al software acceso sin restricciones al controlador, entonces eso debería funcionar. O ahora existen controladores de disco de bajo nivel para exactamente este problema, como el Greaseweazle mencionado por scruss, el Kryoflux y otros.
A partir de un emulador de Spectrum que funcione, no debería ser demasiado difícil agregar la interfaz de disco Swift y leer su disquete.
El software que debería escribir en un WD1770 es muy conocido, por lo que podría aislar esas direcciones con bastante facilidad, y prácticamente lo primero que tendrá que hacer la rutina NMI es hacer una copia de seguridad de la pantalla actual para que probablemente pueda averiguar el Pregunta RAM sin demasiado dilema. En ese punto, podría ser tan fácil como simplemente conectar la imagen de su disco.
Muchas veces, cuando estas interfaces un poco más oscuras no se emulan es solo porque no hay datos de prueba disponibles; es muy posible que pueda interesar a un autor existente con solo tener una imagen de disco. De lo contrario, un emulador de Spectrum es fácil de eliminar, por lo que alguien como yo, que tiene el tipo de código generalmente correcto, debería poder ayudar.
Alternativamente, dado que mi búsqueda no fue especialmente exhaustiva, es posible que descubra que la cosa ya está emulada, en cuyo caso, hágamelo saber para que pueda cambiar el 90% de esta respuesta.
Parece que usa WD1770. No estoy familiarizado con él, pero primero verifique si WD1770 es compatible con el formato de IBM. Si es así, puede leer los discos directamente en la PC ... Si no, necesita HW capaz de leer el disco .
Entonces, en el caso de que sea compatible con PC, solo tiene que crear una imagen usando el acceso directo al sector en C ++ (o cualquier otro idioma o utilidad) en lugar del formato de archivo. Después de obtener la imagen binaria del disquete (de una forma u otra) hay dos opciones:
emular FDC
por lo que debe tener algún emulador capaz de emular su interfaz FDC o agregar dicha funcionalidad a algún código fuente abierto.
En su último enlace hay imágenes de ROM y también circuito (pero ese es ilegible) por lo que podría ser posible emular esto invirtiendo el circuito ... Hice esto antes para mi emulador y D40 / D80 FDC basado en WD2797 . Sin embargo, esto es fácilmente factible solo para emuladores que se ejecutan en resolución de tiempo MC (ciclo de máquina) (como el mío); de lo contrario, el FDC solo debe piratearse conectándose a la condición HW y SW sin pasar por el código Z80 e inyectando código / operaciones FDC en su lugar Así es como lo hacen la mayoría de los emuladores, sin embargo, esto no es 100% compatible y los cargadores personalizados y otras cosas pueden no funcionar), lo que nadie sin un conocimiento profundo del funcionamiento de FDC específico puede hacer.
extraer archivos
o omite el FDC por completo y extrae los archivos no comprimidos de la imagen en un formato legible por emuladores como
*.tap
. En caso de que comparta algunas imágenes (mejor con la descripción de qué archivos y cuánto tiempo están en ellos), me complacerá intentar crear un convertidor win32 que haga esto por usted.como los archivos son solo instantáneas, esta podría ser su mejor opción. Idealmente, si también tiene acceso al HW, podría crear un patrón de memoria específico y guardarlo en un disquete para que la inferencia del sistema de archivos sea más fácil ... por ejemplo, llene el 128K (parte de RAM) con direcciones de 32 bits (valor incremental) para que podamos puede juntar los sectores en el orden correcto y luego emparejarlo con FAT si se usa ...