Spectrum +3 CP/M en disco duro interfaz 8 bits, DivIDE, DivMMC y ZXMMC

Aquí solo proyectos que incluyan el código fuente

Moderador: Fundadores

Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Responder
Avatar de Usuario
otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Been thanked: 1 time

Spectrum +3 CP/M en disco duro interfaz 8 bits, DivIDE, DivMMC y ZXMMC

Mensaje por otivax »

Hola.
Hace ya un par de años hice un driver para poder usar el disco duro/Compact FLASH con el Locomotive Spectrum +3 CP/M. El driver fallaba muchas veces =) y lo eliminé . Por entonces había arrancar el CP/M desde el disquete. Ahora he creado un cargador para el CP/M desde disco duro y el driver en si para poderlo usar. Se puede usar en un +3E, en un +2E y en un +3.
¿Cómo funciona?. El proceso consta de partes:
El cargador. LOADER y LOADER.BIN
  • LOADER - Programa en BASIC que carga y ejecuta el LOADER.BIN
    LOADER.BIN - Carga los archivos S10CPM3.EMS y 8BIT.BIN, parchea el primero, coloca cada archivo en sun página RAM adecuada, configura la memoria a ALL RAM 4, 5, 6, 3 e inicia el CP/M.
El driver. 8BIT.BIN
  • Permite el acceso a una partición del disco duro llamada "CP/M" (en mayúsculas)
Con la ayuda del debugger del ZXSpin analice el sector de arranque del disquete del CP/M y conseguí cargar el S10CPM3.EMS desde el disco duro y configurar el entorno de memoria para ejecutarlo. Fue la parte más o menos fácil. Después seguí analizando el funcionamiento de las rutinas de carga e instalación de los FID (drivers). Esto si que fue duro :)) . Por fin, con esta información, tras la carga del archivo EMS logré interceptar la rutina adecuada para instalar el driver 8Bit.bin, configurar C: como unidad actual, seguir con la búsqueda de FIDs, y finalizar el arranque del sistema. Tras estos pasos en la pantalla aparece C: :D
En el zip que adjunto están los archivos necesarios, una imagen en dsk para cargarlos en el +3 y las instrucciones para preparar el disco duro.
Espero que os guste y si encontráis algún error me lo hagáis saber. Solo lo he podido probarlo con dos Compact FLASH como disco duro. Por ahora, el driver es muy básico y aún no trata errores de lectura/escritura en discos dañados. Lo iré implemetando si todo lo hecho hasta ahora funciona bien, al igual que el mapeo de una segunda partición; de modo que quede una pequeña para el sistema y otra para software CP/M.
Por último, renombrando el archivo 8bit.bin a 8bit.fid, este puede usarse en un disquete de arranque del CP/M si no tenemos las ROM del +3E.
Espero vuestro comenrarios. Gracias. Otivax.

Edición 24/01/2017 Añado nueva versión 0.4 con soporte para dos particiones y más ;)
Edición 27/01/2017 Elimino versión 0.4 y añado la versión 0.5
La versión 0.5 contiene un driver para el interface de 8 bits y uno para el DivIDE. El nuevo cargador versión 1.2 determina que interface esta presente y carga el driver adecuado. IMPORTANTE: Configurar el DivIDE como "Solo inteface de 16 bits". Por último, el cargador sirve para cargar también desde una unidad de 3.5" mapeada como B: sea cual sea el formato del disco: 720K, 800K, 180K, ...
Edición 11/03/2017 Nueva versión 0.7. Incluye soporte para el interface de 8bits, para el DivIDE, para el DiVMMC y para el ZXMMC.
El cargador lo he modificado para que el CP/M sea compatible con el +2E y el ZX Uno que no tienen controladora de disco (FDC765).
Edición 18/01/2019
Reparados links driver versión 0.7 y gif. Subo versión 0.8 que corrige problemas en interfaces xxxMMC.

Edición 11/10/2019 No consigo añadir los archivos zip con los drivers. Al adjuntarlos da un error informando que no es un archivo de imagen válido ::? Cuando consiga ponerme al día en eso del almacenamiento en la nube, adjuntaré los enlaces.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Última edición por otivax el 11 Oct 2019, 17:19, editado 12 veces en total.
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 9988
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 177 times

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por sinclair200 »

Se puede hacer lo mismo, pero metiéndolo en la CF de mi divide, la que utilizo de disco duro?
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Been thanked: 1 time

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por otivax »

sinclair200 escribió:Se puede hacer lo mismo, pero metiéndolo en la CF de mi divide, la que utilizo de disco duro?
No, él divide usa un interfaz de 16 bits y no sé qué puertos usa. Si algún día me hago con uno solo tendría que crear un driver FID para el mismo, el cargador funcionaría igual.
Buscaré información y si no es muy complicado siempre puedo desarrollarlo en el emulador y te lo paso para que pruebes si en uno real funciona.
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 9988
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 177 times

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por sinclair200 »

otivax escribió:
sinclair200 escribió:Se puede hacer lo mismo, pero metiéndolo en la CF de mi divide, la que utilizo de disco duro?
No, él divide usa un interfaz de 16 bits y no sé qué puertos usa. Si algún día me hago con uno solo tendría que crear un driver FID para el mismo, el cargador funcionaría igual.
Buscaré información y si no es muy complicado siempre puedo desarrollarlo en el emulador y te lo paso para que pruebes si en uno real funciona.
Seria fantástico, porque soy un forofo del CP/M y me encanta tener el disco C: en el +3 gracias al Divide...... :D :D
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Been thanked: 1 time

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por otivax »

Le he echado un ojo al DivIDE.
Como esperaba, los puertos son diferentes, aparte de que en lugar de solo aprovechar 256 bytes tiene disponibles los 512 bytes por sector; normal es un inteface de 16 bits.
Por otro lado, lo he cargado en el ZX Spin y este me pide un firmware para el DivIDE. Le he puesto el que viene en la carpeta de ROM, el archivo "+DivIDE.bin" ¿Qué firmware tiene el tuyo para que sea compatible con las ROM del +3E?
Por último, veo que mapea su propia RAM en los primeros 16 KB y creo que usa su propio sistema de paginación y no se si será compatible con el modo ALL RAM del +3. Seguiré investigando.

ROM Information:
ROM Filename: D:\Speccy\ZX Spin\ROMs\dives3eE.rom
ROM Size: 8kb (DivIDE Page 3)
ROM Paged: DivIDE RAM Page 3

RAM Paging Information:
+3 Paging is in Special Mode
$0000..$1FFF: DivIDE RAM Page 3
$2000..$3FFF: DivIDE RAM Page 0
$4000..$7FFF: Page 5
$8000..$BFFF: Page 6
$C000..$FFFF: Page 3

Por cierto, en otro hilo he visto que tienes un +2E y un interfaz de 8 bits. En ese sistema podrías usar tanto el cargador como el driver y tener CP/M en el +2E. Si no te aclaras como hacerlo, sigue estos pasos:
- En el +2E creas la partición en la compact FLASH y la llamas CP/M. Comando: NEW DATA "CP/M",2
- Coges la CF y la llevas a un PC con el lector adecuado.
- En el PC ejecutas como administrador el drimg107.exe de Pera Putnik y le das a crear una imagen de la CF. Te creará un archivo hdf.
- Ahora abres StrowSaw.exe, seleccionas la partición CP/M y le copias los archivos del disquete del CP/M y los archivos: 8bit.bin, loader y loader.bin. Guardas los cambios.
- Con el drimg107.exe, ejecutandolo otra vez como administrador, seleccionas la CF y le das a "Write to drive". te pide un archivo y selecionas el hdf modificado con el StrowSaw, esperas un poco a que copie la imagen y ya tienes lista la CF para usarla en el +2E. En el editor de BASIC le das a un LOAD "LOADER" y a funcionar.
Esto también valdría para un +3 con la ROM original copiando el loader y el FID en el disquete de arranque del CP/M y con LOAD "A:LOADER" tendrías el CP/M listo para usar el disco duro y la unidad A:.
Ya me cuentas.
Otivax
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 9988
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 177 times

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por sinclair200 »

otivax escribió:Le he echado un ojo al DivIDE.
Como esperaba, los puertos son diferentes, aparte de que en lugar de solo aprovechar 256 bytes tiene disponibles los 512 bytes por sector; normal es un inteface de 16 bits.
Por otro lado, lo he cargado en el ZX Spin y este me pide un firmware para el DivIDE. Le he puesto el que viene en la carpeta de ROM, el archivo "+DivIDE.bin" ¿Qué firmware tiene el tuyo para que sea compatible con las ROM del +3E?
Por último, veo que mapea su propia RAM en los primeros 16 KB y creo que usa su propio sistema de paginación y no se si será compatible con el modo ALL RAM del +3. Seguiré investigando.

ROM Information:
ROM Filename: D:\Speccy\ZX Spin\ROMs\dives3eE.rom
ROM Size: 8kb (DivIDE Page 3)
ROM Paged: DivIDE RAM Page 3

RAM Paging Information:
+3 Paging is in Special Mode
$0000..$1FFF: DivIDE RAM Page 3
$2000..$3FFF: DivIDE RAM Page 0
$4000..$7FFF: Page 5
$8000..$BFFF: Page 6
$C000..$FFFF: Page 3

Por cierto, en otro hilo he visto que tienes un +2E y un interfaz de 8 bits. En ese sistema podrías usar tanto el cargador como el driver y tener CP/M en el +2E. Si no te aclaras como hacerlo, sigue estos pasos:
- En el +2E creas la partición en la compact FLASH y la llamas CP/M. Comando: NEW DATA "CP/M",2
- Coges la CF y la llevas a un PC con el lector adecuado.
- En el PC ejecutas como administrador el drimg107.exe de Pera Putnik y le das a crear una imagen de la CF. Te creará un archivo hdf.
- Ahora abres StrowSaw.exe, seleccionas la partición CP/M y le copias los archivos del disquete del CP/M y los archivos: 8bit.bin, loader y loader.bin. Guardas los cambios.
- Con el drimg107.exe, ejecutandolo otra vez como administrador, seleccionas la CF y le das a "Write to drive". te pide un archivo y selecionas el hdf modificado con el StrowSaw, esperas un poco a que copie la imagen y ya tienes lista la CF para usarla en el +2E. En el editor de BASIC le das a un LOAD "LOADER" y a funcionar.
Esto también valdría para un +3 con la ROM original copiando el loader y el FID en el disquete de arranque del CP/M y con LOAD "A:LOADER" tendrías el CP/M listo para usar el disco duro y la unidad A:.
Ya me cuentas.
Otivax
Joer, pero tu te crees que yo soy flopping o wilco? :D :D :D
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
merlinkv
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 6349
Registrado: 06 Abr 2015, 23:08
Ubicación: Madrid / Europa del Este
Has thanked: 112 times
Been thanked: 316 times
Contactar:

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por merlinkv »

sinclair200 escribió:Joer, pero tu te crees que yo soy flopping o wilco? :D :D :D
:)) :)) :)) :)) :))
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 46 times
Been thanked: 101 times

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por wilco2009 »

Tengo que hacerme una particion en mi tarjeta para probar esto. Tiene una pinta de miedo.

Ahora que ya tengo mi cpm86 en el pc y como maquina virtual ya le he cogido el gustillo al cpm. A ver si me lo pongo en el spectrum. :-]
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
merlinkv
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 6349
Registrado: 06 Abr 2015, 23:08
Ubicación: Madrid / Europa del Este
Has thanked: 112 times
Been thanked: 316 times
Contactar:

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por merlinkv »

wilco2009 escribió:Ahora que ya tengo mi cpm86 en el pc y como maquina virtual ya le he cogido el gustillo al cpm. A ver si me lo pongo en el spectrum. :-]
Pregunta tonta del día de alguien que no ha usado nunca CP/M ... ¿Que ventajas ofrece? ... :|
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 46 times
Been thanked: 101 times

Re: Spectrum +3 CP/M en disco duro interfaz 8 bits

Mensaje por wilco2009 »

merlinkv escribió:
wilco2009 escribió:Ahora que ya tengo mi cpm86 en el pc y como maquina virtual ya le he cogido el gustillo al cpm. A ver si me lo pongo en el spectrum. :-]
Pregunta tonta del día de alguien que no ha usado nunca CP/M ... ¿Que ventajas ofrece? ... :|
Eso es como preguntar que ventajas ofrece el Spectrum respecto a un PC.

El CPM tenía ventajas puesto en su época. Pretendía ser un sistema operativo de disco universal para las máquinas con Z80, de tal manera que todas ellas se usaran de la misma forma y tuvieran software compatible entre ellas.

Visto desde el momento actual es un sistema operativo muy parecido a las primeras versiones de MSDOS (de hecho muchos dicen que el MSDOS es una copia del CP/M). El inconveniente más llamativo es que no tiene carpetas (igual que las primeras versiones de MSDOS).

La unica ventaja ahora mismo es poder jugar a configurarlo, aprender a usar sus comandos etc, y probar su software, aunque este, al ser generico, suele ser en modo texto y bastante más feo que el que puedas encontrar para spectrum.

Son exactamente las mismas ventajas que te da un spectrum respecto a un pc, el gusto de tocar y recordar algo con sabor a los años 80.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Responder

Volver a “Proyectos de software abiertos”