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
Avatar de Usuario
España javier2112
Demonio tercer orden
Demonio tercer orden
Mensajes: 677
Registrado: 30 Oct 2014, 12:36
Ubicación: Málaga
Has thanked: 29 times
Been thanked: 42 times
Contactar:

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

Mensaje por javier2112 » 20 Ene 2017, 10:06

Hola.

Antes de nada, permíteme que te de la enhorabuena por el trabajo. ¿Cuántas veces habrá oido decir en los últimos 15 años que no se podía usar el disco duro con el CP/M? Pues sí lo es, y es gracias ati. Por eso creo que lo que has hecho tiene mucho mérito, un hackeo en toda regla, de lo mejor que he leído por aquí. Lo que pasa es que quizá mucha gente en este foro pueda apreciarlo, pero desde luego no es mi caso.

Respecto a lo que comentaba sinclair200, creo que se refiere a usar el DIVIDE como una "simple" controladora IDE de 16 bits, en lugar de 8, que se integra igualmente con el DOS del +3e. Existe otro modo, el más utilizado por otra parte, en el que el DIVIDE utiliza un firmware propio y tiene más posibilidades, pero funciona con la ROM del 48k e ignora todo lo relativo al +3e. Por ello, no creo que sea posible hacer el driver para este modo, má funciona en modo 48 y no es posible trabajar en modo ALL RAM, que es necesario para el CP/M. Además sólo estarían disponibles 48k y CP/M necesita 64.

La información que has encontrado parece que relativa a este último modo y por eso no te servirá de mucho. Por ello creo que deberías echar un vistazo a la rom +3e versión para DIVIDE, igual que lo habrás hecho previamente con la versión para interfaz de 8 bits. Las roms están aquí:
http://www.worldofspectrum.org/zxplus3e/p3eroms.html

Los cambios no deberían ser muy grandes por lo que me parece no debería serte muy difícil desarrollar el driver habiéndolo hecho antes para la versión de 8 bits. Quizá el problema es que no se disponen de los fuentes para la versión DIVIDE; sin embargo, Antonio Villena desemsambló la rom versión para DivMMC (un interfaz IDE muy similar al DIVIDE):
viewtopic.php?t=2220
viewtopic.php?f=63&t=1960&start=10#p29249
https://sourceforge.net/p/emuscriptoria ... /plusROMs/


Por otra parte, quizá sería buena idea contactar con el autor del +3e informando de tus logros. Lo mismo lo ve interesante y es factible integrar tu driver en el sistema operativo o te ayude con esto.



Saludos.

Avatar de Usuario
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Has thanked: 4 times
Been thanked: 14 times
Contactar:

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

Mensaje por otivax » 20 Ene 2017, 17:06

Hola.
Gracias por tus comentarios Javier2112,
He leído un poco sobre los puertos que usa el DivIDE para controlar el disco, no sería muy complicado ya que incluso usa direccionamiento LBA para el disco duro, justo como hago yo en el driver 8bit.
Como físicamente no tengo ninguno, quiero emularlo en el ZX Spin por su magnífico debugger. Este me pide una ROM par a el interfaz y no sé cual poner. El único con el que me funciona es el "+DivIDE.bin".
El caso es que he leído que hay un junper para desactivar la memoria del DivIDE:
Jumper E (JP2) must be open:
- if you reflash EEPROM
- if DivIDE memory must be disabled (only IDE ports can be used)
- in 16kB allram mode ( * ) with new R"GAL
Tampoco sé si esto está implementado en algún emulador.
Probaré a ver si puedo desactivar la RAM del DivIDE con el puerto de control:
[ CONTROL REGISTER (Write Only) ]
xxxx xxxx 1110 0011, 0e3h, 227
This register is write-only (readed data will be unknown).
7 6 5 4 3 2 1 0
[ CONMEM , MAPRAM, X, X, X, X, BANK1, BANK0 ]

Por ahora, me voy a centrar en añadir una segunda partición como disco duro para el CP/M, Ya os iré contando.
Gracias. Otivax.

Avatar de Usuario
España_Comunidad_Valenciana wilco2009
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 7866
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 95 times
Been thanked: 122 times
Contactar:

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

Mensaje por wilco2009 » 20 Ene 2017, 17:24

otivax escribió:Hola.
El caso es que he leído que hay un junper para desactivar la memoria del DivIDE:
Jumper E (JP2) must be open:
- if you reflash EEPROM
- if DivIDE memory must be disabled (only IDE ports can be used)
- in 16kB allram mode ( * ) with new R"GAL
Tampoco sé si esto está implementado en algún emulador.
Probaré a ver si puedo desactivar la RAM del DivIDE con el puerto de control:
[ CONTROL REGISTER (Write Only) ]
xxxx xxxx 1110 0011, 0e3h, 227
This register is write-only (readed data will be unknown).
7 6 5 4 3 2 1 0
[ CONMEM , MAPRAM, X, X, X, X, BANK1, BANK0 ]

Por ahora, me voy a centrar en añadir una segunda partición como disco duro para el CP/M, Ya os iré contando.
Gracias. Otivax.
En el eightyone está implementado el acceso al divIDE en modo IDE (o sea, deshabilitando la ROM del divIDE con el jumper E) y supo`ngo que en muchos más.

En el eightyone se tiene que hacer lo siguiente:

- Options
- Hardware
- Spectrum +3
- Drives
- IDE = divIDEV1
- Upload Jumper = on

Además debes asignar las ROMs del +3e (versión divIDE) en
- Advanced Settings
- ROM File - Aquí le tienes que cargar una ROM de 64Kb, o sea las que van terminadas en E del proyecto +3e.

Luego puedes cargar una imagen hdf desde el menú:
- Archivo
- Drives
- HD 0: El archivo hdf que sea.
"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
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Has thanked: 4 times
Been thanked: 14 times
Contactar:

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

Mensaje por otivax » 20 Ene 2017, 17:30

Muchas gracias por la info Willco.
Probaré con el EightyOne. El debugger del ZX Spin gusta más, pero el de EightyOne tampoco es malo :))

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2918
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 94 times
Been thanked: 324 times
Contactar:

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

Mensaje por Kyp » 20 Ene 2017, 17:55

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.
El DivIDE real tiene un jumper para deshabilitar el paginado de su ROM/RAM que hay que quitar para que funcione el +3e. No veo la opción equivalente en el Spin. Además, hay que poner como firmware el del esxdos que tampoco viene con el Spin pero puedes usar el binario para grabar la ROM que viene con el esxdos.

Te adjunto un documento con información sobre como funciona el DivIDE, incluyendo los puertos para acceder al interfaz IDE.
divide.zip
divide.zip (3.5 KiB) Visto 138 veces

Avatar de Usuario
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Has thanked: 4 times
Been thanked: 14 times
Contactar:

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

Mensaje por otivax » 20 Ene 2017, 22:37

Muchas gracias Kyp. El documento lo había visto. Con esa información y el EightyOne creo que algo podré hacer.
Por otro lado, a ver si alguien lo puede probar en su interface. Solo lo he probado con dos CF de 32 y 256 MB con mi interfaz 8 bits casero. El resto de pruebas han sido en el ZX Spin y en el FUSE.
Salu2.

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2918
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 94 times
Been thanked: 324 times
Contactar:

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

Mensaje por Kyp » 21 Ene 2017, 20:42

Yo no puedo probarlo :(

Avatar de Usuario
España otivax
Aspirante a demonio
Aspirante a demonio
Mensajes: 425
Registrado: 22 Ene 2015, 11:05
Ubicación: Alcoy
Has thanked: 4 times
Been thanked: 14 times
Contactar:

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

Mensaje por otivax » 24 Ene 2017, 14:23

Hola.
He subido una nueva versión, la 0.4. El zip con todo lo necesario e instrucciones está en el primer post.
Como novedad he añadido soporte para una segunda partición donde podemos guardar aplicaciones CP/M como dBase II, Wordstar, Multiplan, etc. Esta segunda partición ha de llamarse "SOFTWARE" en mayúsculas. Aunque CP/M no maneja directorios podemos ordenar los progrmas por usuarios. Por ejemplo:
1D: --> dBase
2D: --> Wordstar
3D: --> Multiplan
igual que para cambiar de unidad tecleamos A:, podemos usar 1D: o USER 1 para cambiar de usuario.
Podemos igualmente crearnos archivos SUB (como los bat de MS-DOS) en el usuario 0 y darle atributos de sistema con SET file.sub [SYS]. De este modo, aunque estemos en el usuario 2 si tecleamos file.sub lo buscará y lo ejecutará. Ejemplo:
dBase.sub (guardarlo en usuario 0 con atributos de sistema)
USER 1
dbase

wordstar.sub (guardarlo en usuario 0 con atributos de sistema)
USER 2
ws

Otra novedad es que el cargador sirve aunque no tengamos disco duro/CF o ni siquiera las ROM +3E para cargar el CP/M desde un disquete de 3.5" con formato de 720K, 800K, etc. Por ejemplo en un +3 original con unidad de 3" como A: y una de 3.5" como B: si insertamos en B: un disquete de 720K con los archivos del CP/M y el cargador (LOADER y LOADER.BIN) podemos hacer lo siguiente:
LOAD "B:"
LOAD "LOADER"
El CP/M se cargará desde B: y al finalizar nos mostrará un prompt A: y podremos trabajar con ambas unidades.
Espero vuestros comentarios.
Gracias, Otivax

Avatar de Usuario
Germany overCLK
Demonio segundo orden
Demonio segundo orden
Mensajes: 1678
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 5 times
Been thanked: 15 times
Contactar:

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

Mensaje por overCLK » 26 Ene 2017, 11:58

Muy interesante otivax, ¡enhorabuena por el proyecto!

¿Habría posibilidad de tener acceso a los fuentes del driver y del cargador? :-)
Imagen

Avatar de Usuario
España sinclair200
Moderador
Moderador
Mensajes: 9141
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 14 times
Been thanked: 115 times
Contactar:

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

Mensaje por sinclair200 » 26 Ene 2017, 14:19

otivax escribió:Hola.
He subido una nueva versión, la 0.4. El zip con todo lo necesario e instrucciones está en el primer post.
Como novedad he añadido soporte para una segunda partición donde podemos guardar aplicaciones CP/M como dBase II, Wordstar, Multiplan, etc. Esta segunda partición ha de llamarse "SOFTWARE" en mayúsculas. Aunque CP/M no maneja directorios podemos ordenar los progrmas por usuarios. Por ejemplo:
1D: --> dBase
2D: --> Wordstar
3D: --> Multiplan
igual que para cambiar de unidad tecleamos A:, podemos usar 1D: o USER 1 para cambiar de usuario.
Podemos igualmente crearnos archivos SUB (como los bat de MS-DOS) en el usuario 0 y darle atributos de sistema con SET file.sub [SYS]. De este modo, aunque estemos en el usuario 2 si tecleamos file.sub lo buscará y lo ejecutará. Ejemplo:
dBase.sub (guardarlo en usuario 0 con atributos de sistema)
USER 1
dbase

wordstar.sub (guardarlo en usuario 0 con atributos de sistema)
USER 2
ws

Otra novedad es que el cargador sirve aunque no tengamos disco duro/CF o ni siquiera las ROM +3E para cargar el CP/M desde un disquete de 3.5" con formato de 720K, 800K, etc. Por ejemplo en un +3 original con unidad de 3" como A: y una de 3.5" como B: si insertamos en B: un disquete de 720K con los archivos del CP/M y el cargador (LOADER y LOADER.BIN) podemos hacer lo siguiente:
LOAD "B:"
LOAD "LOADER"
El CP/M se cargará desde B: y al finalizar nos mostrará un prompt A: y podremos trabajar con ambas unidades.
Espero vuestros comentarios.
Gracias, Otivax
Yo en estas cosas, soy muy negao, cuando funcione con el divide en modo IDE, si tu quieres claro, te envío una compact flash y me grabas en ella el CP/M y en otro directorio las aplicaciones que comentas que corren bajo ese sistema y te pago lo que sea..... :D
Imagen
Z80 INSIDE.........
WANTED:…………. :D

Responder

Volver a “Proyectos de software abiertos”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado