Propuesta: CPC6128HD

Responder
Zup
Mensajes: 112
Registrado: 16 Sep 2016, 20:22

Propuesta: CPC6128HD

Mensaje por Zup » 09 Abr 2017, 13:29

No creo que sea el más indicado para hablar (ni tengo idea del esfuerzo que requiere programar una FPGA ni he sido usuario de CPC, aunque tengo dos), pero esta sería mi propuesta para tener un Amstrad que tire de SD.

La idea es no complicar demasiado las cosas (=no hacer una Symbiface) para que todo quepa más o menos bien en la FPGA (tampoco tengo ni idea de cuánto espacio les queda libre a los desarrolladores para jugar).

- Ampliar a 128k la RAM y meter las roms del 6128.
- Añadir un 765 dummy (que siempre reporte que la disquetera está vacía, sin emular ninguna cosa más) para que AMSDOS arranque (NOTA: no estoy seguro de si Bonny DOS requiere que exista la ROM de AMSDOS. Tampoco estoy seguro de si un CPC6128 podría arrancar sin el 765, a lo mejor ni hace falta poner el 765 dummy.).
- Añadir la emulación de IDE de CPC-IDE (o Symbiface o X-MASS, como prefiráis). Solo hay que emular el IDE, el resto es complicarse la vida.
- Emular una mini ROM board y añadir las roms de Bonny DOS.

Ventajas:
- Espero que el coste no sea excesivo. Al menos es menor que simular una X-MASS o Symbiface al completo.
- Como supuestamente (no lo he probado) Bonny DOS es 100% compatible a nivel de comandos con AMSDOS, los ficheros de los discos pirateados de Amstrad (o los del CPCGamesCD) podrían copiarse a la SD y ejecutarse sin problemas.
- Debería poder funcionar en un ZX-Uno estándar (=sin expansiones de memoria).

Desventajas:
- BonnyDOS utiliza su propio formato para el disco duro (no es FAT), por lo que hay que usar una herramienta especial para pasar los ficheros.
- Esa herramienta creo que solo existe para DOS.
- Al limitar tanto el hardware no se pueden utilizar estos GUI tan chulos que hay por ahí (FutureOS).

Creo que al evitar hacer una Symbiface completa o una emulación completa de disquete, el camino es más rápido y sencillo... aunque el desarrollador del core tendrá la última palabra.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Propuesta: CPC6128HD

Mensaje por mcleod_ideafix » 09 Abr 2017, 16:08

Zup escribió:Solo hay que emular el IDE, el resto es complicarse la vida.
Este es el quid de la cuestión. Que habría que hacer un core que tradujera comandos IDE a comandos SD. No es trivial, y para colmo, el resultado será que seguirán sin poderse usar imágenes de disco, a menos que estén formateadas de forma estándar y se pase su contenido a la tarjeta SD (vamos, lo que hago con la utilidad 3e que es capaz de leer DSKs, extraer los ficheros que tiene y dárselos a la SD)
Zup escribió:- Espero que el coste no sea excesivo. Al menos es menor que simular una X-MASS o Symbiface al completo.
El core que traduce de IDE a SD tiene su miga.
Zup escribió:- Como supuestamente (no lo he probado) Bonny DOS es 100% compatible a nivel de comandos con AMSDOS, los ficheros de los discos pirateados de Amstrad (o los del CPCGamesCD) podrían copiarse a la SD y ejecutarse sin problemas.
No conozco Bonny DOS, así que no puedo opinar sobre él. Pero de ser como dices, estaríamos limitados a disquetes sin protección, con ficheros estándar.
Zup escribió:- Debería poder funcionar en un ZX-Uno estándar (=sin expansiones de memoria).
Una implementación de disquete (de hasta 43 pistas, 1 cara, y de hasta 9 sectores por pista) no requiere de expansiones de memoria. Con los 512KB podemos hacerlo.
Zup escribió:Creo que al evitar hacer una Symbiface completa o una emulación completa de disquete, el camino es más rápido y sencillo... aunque el desarrollador del core tendrá la última palabra.
Yo, a primera vista, no veo que sea más rápido o sencillo. Y aún haciéndolo, estamos (de nuevo) obligando al usuario a usar otra tarjeta SD exclusivamente para este core.

Mi intención, como ya comenté en otro hilo cuando expliqué el "roadmap" para este core, es dotarlo de una implementación lo suficientemente decente de disquetera como para poder cargar ficheros DSK. Tampoco es nada trivial, ya que consistiría en:
- Una pequeña interface hardware para usar la tarjeta SD (esto lo sacamos del core de Spectrum)
- Una implementación del NEC 765, que use memoria RAM como si fuera una imagen de disco (esto hay que hacerlo de cero)
- Una ROM con RSX que contenga las rutinas para acceder a la SD con sistema de ficheros FAT16/32, y que exporte comandos para navegar por dicha SD (cambiar de directorio, etc) y montar un DSK. Montar un DSK consiste en leerlo de la tarjeta, interpretar la información del formato DSK y crear una imagen en memoria RAM de todo el disquete, incluyendo posiblemente la información a bajo nivel que el 765 precisa y que se encuentra en el propio DSK.Tengo memoria de sobra como para guardar una imagen de disco de hasta 45 pistas, 1 cara, y de hasta 10 sectores por pista, con sectores de 512 bytes. Con esto creo que cubriría la gran mayoría de discos que hay por ahí. En el tintero se quedarían los discos que usan tamaños de sector gigantescos (8KB), o discos con sectores débiles. De esta parte, el acceso a la SD desde lenguaje ensamblador de Z80 lo tenemos hecho, cogiendo las rutinas que ya existen en la BIOS, y la parte en la que se lee e interpreta el fichero DSK habría que hacerla desde cero.

La ventaja de esta idea es que soporto el tipo de fichero más usual en la escena de preservación del CPC, que son los disquetes, y que lo que hiciera para este core lo podría transportar al de Spectrum para darle soporte de disco al +3 y así cargar cosas en DSK en el Spectrum.

Sea como sea, sé que es algo que me llevará bastante tiempo, así que mientras tanto, habrá que seguir tirando de cintas o ficheros CDT, y pulir el core, que aún hay bastantes juegos que se resisten a funcionar bien.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Propuesta: CPC6128HD

Mensaje por antoniovillena » 09 Abr 2017, 18:39

Exacto, es lo que dice McLeod. El método más eficiente es el que use el formato más extendido para esa plataforma. En el caso del spectrum, el formato más extendido fue la cinta. Y la mayoría de juegos o bien están en carga estándar, o bien desprotegidos, por lo que con un sistema que cargue ficheros .TAP desde SD cubres prácticamente el 95% del software. Y el 5% restante son mayormente juegos con carga estándar que no usan la rutina de la ROM, ya que prácticamente todos los juegos de spectrum fueron desprotegidos.

En Amstrad el panorama es muy distinto. Lo más extendido fueron los DSK, por lo que habrá que adaptarse a ese formato. También hay software en cinta, pero la mayoría son cargas custom (hay muy pocos que empleen rutinas de la ROM). De nada te sirve hacer un sistema transparente que lea ficheros de FAT, cuando gran parte de los DSK usan sistemas de protección en disco. Esto es, usan trucos que leen sectores a bajo nivel con un formato de disco especial. Con un sistema transparente podrás extraer de DSK ficheros de manera automática digamos que en un 20% de los casos (una cifra arbitraria que me acabo de inventar). Para el 80% restante, tendrás que analizar el sistema de desprotección y eliminarlo, de tal forma que se carguen archivos con llamadas a sistema a nivel de fichero (no de disco).

Responder