Página 1 de 17

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

Publicado: 19 Ene 2017, 14:25
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.

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

Publicado: 19 Ene 2017, 15:05
por sinclair200
Se puede hacer lo mismo, pero metiéndolo en la CF de mi divide, la que utilizo de disco duro?

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

Publicado: 19 Ene 2017, 19:14
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.

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

Publicado: 19 Ene 2017, 20:05
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

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

Publicado: 19 Ene 2017, 21:09
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

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

Publicado: 19 Ene 2017, 21:12
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

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

Publicado: 19 Ene 2017, 22:48
por merlinkv
sinclair200 escribió:Joer, pero tu te crees que yo soy flopping o wilco? :D :D :D
:)) :)) :)) :)) :))

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

Publicado: 20 Ene 2017, 01:02
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. :-]

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

Publicado: 20 Ene 2017, 08:31
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? ... :|

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

Publicado: 20 Ene 2017, 09:28
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.