Página 2 de 20

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

Publicado: 20 Ene 2017, 10:06
por javier2112
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.

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

Publicado: 20 Ene 2017, 17:06
por otivax
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.

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

Publicado: 20 Ene 2017, 17:24
por wilco2009
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.

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

Publicado: 20 Ene 2017, 17:30
por otivax
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 :))

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

Publicado: 20 Ene 2017, 17:55
por Kyp
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 132 veces

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

Publicado: 20 Ene 2017, 22:37
por otivax
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.

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

Publicado: 21 Ene 2017, 20:42
por Kyp
Yo no puedo probarlo :(

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

Publicado: 24 Ene 2017, 14:23
por otivax
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

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

Publicado: 26 Ene 2017, 11:58
por overCLK
Muy interesante otivax, ¡enhorabuena por el proyecto!

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

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

Publicado: 26 Ene 2017, 14:19
por sinclair200
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