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
retrolab Andorra
Demonio segundo orden
Demonio segundo orden
Mensajes: 1135
Registrado: 17 Feb 2014, 09:52
Has thanked: 70 times
Been thanked: 119 times

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

Mensaje por retrolab »

Perdon por el reflote pero no tengo el cpm locomotive ni encuentro el link para descargar el cargador para 8bits y divide. Alguien me puede pasar las imagenes y lo demas, por favor?
Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 83
Registrado: 11 Mar 2017, 01:21
Been thanked: 1 time

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

Mensaje por desUBIKado »

retrolab escribió: 25 Abr 2021, 01:31 Perdon por el reflote pero no tengo el cpm locomotive ni encuentro el link para descargar el cargador para 8bits y divide. Alguien me puede pasar las imagenes y lo demas, por favor?
Lo tienes en la página 18 de este hilo: viewtopic.php?f=62&t=5605&start=170#p151257

Aquí la versión 0.7: https://mega.nz/file/q15wmYhR#UNRsMT7oB ... iTpSAUpQSw
Avatar de Usuario
retrolab Andorra
Demonio segundo orden
Demonio segundo orden
Mensajes: 1135
Registrado: 17 Feb 2014, 09:52
Has thanked: 70 times
Been thanked: 119 times

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

Mensaje por retrolab »

Gracias! :-]
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

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

Mensaje por Spirax »

spark2k06 escribió: 08 Dic 2020, 12:56 Lo primero, enhorabuena @otivax por este magnifico trabajo. Me gustaría poder usarlo en un ZXUno con una MicroSD que tiene dos particiones, la primera de +3DOS y después otra de FAT16, así es como tengo configurada la tabla de particiones en una tarjeta de 8Gb, para no tener que usarlo en una tarjeta exclusivamente con el +3DOS:

Imagen

Examinando la MicroSD con un editor hexadecimal, vemos que en este caso la firma PLUSIDEDOS comienza a partir del sector 128, dirección 0x10000 de la tarjeta. Los primeros sectores están ocupados por la información referente a las particiones, y por tanto, en el sector 0 (dirección 0x0) no se encuentra referencia alguna al +3DOS:

Imagen

Como se puede apreciar, la ROM del +2E detecta correctamente la partición en esta tarjeta:

Imagen

Y es que de hecho, el CP/M arranca... pero luego éste trata de buscar la partición en el sector 0, pista 0 y claro, ahí no se encuentra:

Imagen

¿Sería muy complicado modificarlo para que haga una búsqueda de la firma PLUSIDEDOS en los primeros sectores? (al menos los primeros 128), o buscar también en el 128 además de en el 0 y si lo detecta operar desde ahí... no se, tal y como debe de estar haciéndolo la propia ROM del +2E :)
independientemente de que consigas que funcione y te detecte las particion tal y como la tienes ...
tienes otro problema añadido que a lo mejor puede que sea el mismo problema u otro diferente.
no se si por el CPM o por el driver pero no funciona con SD's mayores de 2 GB's

lo he probado en una SD de 2 Gb y va genial, pero en las de 4gb no funciona de ninguna manera :(
Avatar de Usuario
spark2k06
Demonio segundo orden
Demonio segundo orden
Mensajes: 1048
Registrado: 16 Oct 2017, 10:18
Has thanked: 9 times
Been thanked: 6 times
Contactar:

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

Mensaje por spark2k06 »

Efectivamente, hay que usar SD de hasta 2Gb.
Spirax escribió: 26 Abr 2021, 16:39
independientemente de que consigas que funcione y te detecte las particion tal y como la tienes ...
tienes otro problema añadido que a lo mejor puede que sea el mismo problema u otro diferente.
no se si por el CPM o por el driver pero no funciona con SD's mayores de 2 GB's

lo he probado en una SD de 2 Gb y va genial, pero en las de 4gb no funciona de ninguna manera :(
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 46 times

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

Mensaje por Spirax »

Bueno al lio, que esto le va a gustar a mas de uno :D

como podeis ver por los post previos el cpm "NO FUNCIONABA" ni en tarjetas mayores de 2Gb ni en tarjetas mixtas +3DOS/FAT32 :|

pero esto ha cambiado :twisted:

con mi reciente adquisicion de un DIVTIESUS, pues he estado jugando un poquillo con una tarjeta mixta a raiz del comando .go3e (que tambien he modificado, esto al final tambien lo explicaré)

he echo un cargador nuevo, basado en el cargador de Otivax pero que solo funciona en Interfaces DIVMMC, ya que como en el zxuno fallaba a veces, no compruebo que interface hay conectado y directamente cargo solo el driver DIVMMC (tambien modificado)

el driver DIVMMC ha sido modificado en estos dos parametros.
se la ha quitado que compruebe si esta funcionando en en DIVMMC, por si acaso le da por fallar esa comprobacion en el zxuno.
se comprueba si la firma de la particion PLUSIDEDOS esta en el sector 0
pero si no esta en el sector 0 se comprueba si esta en el sector 128 y si tampoco esta entonces da el error de particion no encontrada

ahora el LOADERD.BAS
que podeis bajar de aqui
https://mega.nz/file/6csi2BSZ#gElsBR3Lc ... xOhOKZ5NHU

es un unico fichero basic con un cargador en ensamblador dentro que puede estar en cualquier unidad y partición......
tiene bastantes cosas y usa rutinas de +DOS y de +IDE_DOS (+3e)
lo primero que hace es cambiar los colores, borrar la pantalla y escribir el mensaje usando las rutinas de la rom del BASIC.
hace una copia de la pantalla principal en la pantalla shadow y muestra la shadow para toquetear en toda la RAM ;)
comprueba desde que unidad estamos cargando para saber si es A: B: C: D: etc
si es A o B asume que estamos en disquetera e intenta cargar el fichero S10CPM3.EMS desde A o B
pero si es otra unidad el fichero S10CPM3.EMS es cargado desde la particion CP/M
para lo cual hace lo siguiente
primero desmapea la particion en la cual esta de la unidad desde la que este cargando.
busca la particion CP/M en el disco duro y la mapea a la unidad desde la que se este cargando C: D:, etc
ahora carga el fichero S10CPM3.EMS desde la particion CP/M mapeada en la unidad y si lo carga bien seguimos, si no da error....

y ahora viene lo bueno.
uso una llamada del +IDE_3DOS llamada IDE_IDENTIFY para cargar los 512 bytes de la geometria del disco en #4000
y compruebo el numero de sectores del disco en CHS
si el numero de sectores es mayor de 16384, asumo que va a usar LBA como modo de acceso y modifico el Driver DIVMMC de Otivax desactivandole la rutina de multiplicacion de sectores con un RET en el inicio de la rutina ya que si no lo haria doble por eso no funciona en discos grandes
si el numero de sectores es menor dejo el DRIVER con su rutina original.

yo lo he probado con tres tarjetas, una de 2GB, otra de 4GB y otra de 8GB y en las tres me han funcionado a la primera tanto en el DIVTIESUS como en el ZXUNO.
todas las tarjetas me funcionan en los dos sistemas.
tambien las he probado en los emuladores Fuse y en es.pectrum ambos con resultados positivos :)

ahora solo falta que lo pruebe mas gente y me diga que tal va :)

el fichero LOADERD.BAS se puede copiar en cualquier particion de +3dos con el programa 3e de Mcleod
por ejemplo mi imagen de tarjeta la tengo en mi pc con windows en D: se llama zxmmc_fat.img
para ver las particiones +3dos uso el comando asi:
3e "d:\zxmmc_fat.img" showptable

que muestra una lista con las particiones y el numero que le corresponde a cada una
por ejemplo mi particion UTILS del workbench la tengo en el numero 71
para copiar el fichero LOADERD.BAS como CPM a dicha particion se haria con este comando
3e "d:\zxmmc_fat.img" put "LOADERD.BAS" "71:CPM"

donde:
3e es el comando 3e.exe
"d:\zxmmc_fat.img" es la ruta a mi imagen de la tarjeta sd en mi disco duro de windows
put es el comando para meter el fichero
"LOADERD.BAS" es el nombre del fichero que tengo en mi disco duro de windows en el mismo directorio donde tengo el 3e.exe
"71:CPM" 71: es el numero de la particion 3DOS dentro de la imagen de la SD y CPM es el nombre del fichero que quiero que se cree en dicha partición


luego para cargar el CPM basta con hacer el load "CPM" y tiene que tener el fichero "S10CPM3.EMS" dentro de la particion CP/M
ambos ficheros se copian en modo binario, el archivo LOADERD.BAS ya tiene la cabecera +3DOS no hay que volverla a añadir, el fichero "S10CPM3.EMS" tiene que ir sin ella.


--------------------------------------
ahora un poquito del DIVTIESUS
el comando go3e sin pausa lo podeis descargar de aqui
https://mega.nz/file/GAcUXI6Y#zZmt-jIhJ ... ISRiGhR_3I

dicho programa es de Mcleod/Ideafix y acabo de descrubir que los fuentes estan en su github, jajajaja
https://github.com/mcleod-ideafix/divtiesus_utils
la modificacion esta echa mediante desemsamblado, modificacion, re-emsamblado (no sabia que estaban los fuentes disponibles)
yo le he quitado el mensaje que imprime inserte tarjeta y pulse tecla, los cambios de color del borde, etc.
solo carga el fichero de la rom y la ejecuta. solo dará error si no encuentra el fichero de la rom en el directorio /bin

la idea del DIVTIESUS es que arranca en modo ESXDOS en la SD en FAT32 y al ejecutar el comando .go3e carga de la SD la rom del +3E en la memoria del DIVMMC y nos pide cambiar la tarjeta por la formateada a +3DOS para arrancar con la nueva tarjeta.
pero si tenemos una tarjeta mixta la cual no hay que cambiar, porque vamos a esperar... :|
entonces he modificado el .go3e para que cargue la rom directamente y la ejecute, al estar las dos particiones +3DOS y FAT32 a la vez en la tarjeta :P


----------------
NOTA IMPORTANTE
para que funcione tanto el +3DOS como FAT32 en la misma tarjeta
la firma PLUSIDEDOS de la particion +3DOS tiene que estar en el sector 128, algunos gestores de particiones crean la primera particion en el sector 2048,
aunque al ZX le da igual, si el sector 0 es una tabla de particiones de Disco el ZX va a escribir su firma en el sector 128 sin importarle lo que diga la tabla de particiones de donde empieza la particion 1.
para que no den problemas la utilidades 3e, strosaw etc, la tabla de particiones tiene que ser correcta.
osea si la tabla de particiones esta creada con windows y dice que la particion 1 (+3DOS) empieza en 2048, al ZX le va a dar igual porque no mira la tabla de particiones busca la firma en el sector 128, pero las utilidades de gestion de ficheros de windows si miran la tabla de particiones de la SD para localizar la particion +3DOS y debe coincidir que en la tabla de particiones ponga que empieza en el sector 128.
mas info sobre la creacion de discos compartidos en la web del proyecto +3e en español.
https://worldofspectrum.org/zxplus3e/es ... disks.html

y una vez abierta la caja de pandora id contando como os va y si habeis conseguido echarlo a andar en una tarjeta de mas de 2gb ;)
ojo que creo que el nuevo limite esta en 16gb. con mas de 16gb dudo que funcione os dejo las pruebas a vosotros :P
Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 83
Registrado: 11 Mar 2017, 01:21
Been thanked: 1 time

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

Mensaje por desUBIKado »

Spirax escribió: 13 May 2022, 14:06 y una vez abierta la caja de pandora id contando como os va y si habeis conseguido echarlo a andar en una tarjeta de mas de 2gb ;)
ojo que creo que el nuevo limite esta en 16gb. con mas de 16gb dudo que funcione os dejo las pruebas a vosotros :P
Magnífico aporte Spirax. Por ahora lo he probado solo con el DivTiesus y con el ZX-Uno con una tarjeta de 1 GB, y funciona estupendamente.
shadow338
Siervo de Satán
Siervo de Satán
Mensajes: 2
Registrado: 14 Abr 2023, 20:14

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

Mensaje por shadow338 »

Hola,

La distribución funciona en el clon Harlequin de ZX Spectrum?

Gracias.
Avatar de Usuario
mad3001 !Atari
Demonio segundo orden
Demonio segundo orden
Mensajes: 1920
Registrado: 25 Nov 2015, 00:15
Ubicación: Mostoles(Madrid)
Has thanked: 81 times
Been thanked: 113 times

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

Mensaje por mad3001 »

shadow338 escribió: 14 Abr 2023, 20:16 Hola,

La distribución funciona en el clon Harlequin de ZX Spectrum?

Gracias.
Hola, como te comentaba en tu presentación solo en modelos +2A/+2B/+3 que tienen el modo ALL-RAM....
En el caso de +3 hay una versión de disco.
En el caso de +2A/+2B requiere una controladora de disco.
Si tienes ROM +3e y emulación de disco en SD/microSD también podrías usarlo.
Lo mismo hay hay más opciones pero en un Harlequin (48k o 128k) no se puede porque CP/M require acceder a 64K RAM (toda a la vez) y solo los +2A/+2B/+3 tiene esa posibilidad.

Hello, as I mentioned in your presentation only in +2A/+2B/+3 models that have ALL-RAM mode.....
In the case of +3 there is a disk version.
In the case of +2A/+2B it requires a disk controller.
If you have +3e ROM and disk emulation on SD/microSD you could also use it.
There are more options but on Harlequin (48k or 128k) you can't because CP/M requires access to 64K RAM (all at the time) and only the +2A/+2B/+3 has that possibility.
Volviendo a los origenes... programa en assembler
Responder

Volver a “Proyectos de software abiertos”