Abrir ficheros binarios en +2E

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 4:05 pm

Hola a todos, este es mi primer mensaje.
Hace un tiempo me hice con un +2A supuestamente averiado muy económico al que sólo le falla el modulador de RF, por vídeo compuesto y por RGB funciona perfectamente.
Le monté un interface IDE simple de 8 bits (un poco chapucero) interno y le actualicé las ROMS. Primero lo conecté a un HDD de 20 Gigas y después con un adaptador a una CF de 4 Gigas, en ambos casos funciona perfectamente.
LLegados a este punto lo que quería ahora es grabar archivos .Z80 en la CF o HDD desde el PC, pero no he conseguido la forma de hacerlo, ni con el emulador SPIN ni con esa herramienta que hay por ahí que se supone que sirve para eso.
Entonces pensé en interconectar el PC y el Spectrum por el puerto Serie. Después de muchos líos conseguí enviar y recibir datos entre el +2a y el PC, a una velocidad algo lenta pero factible.
Lo primero que envié (a parte de pruebas de texto) fueron unos archivos .SCR en que con sendos programas en BASIC (QBASIC desde el PC y 128 BASIC desde el Spectrum) mediante bucles FOR enviaba byte a byte todo el contenido del archivo SRC. En el Spectrum cada byte leído era directamente "pokeado" a la memoria de vídeo, de forma que se iba generando la imagen en pantalla. Una vez llena y coloreada la pantalla hacia automáticamente un SAVE "nombre" SCREEN$ al "disco duro" del Spectrum. Estas pruebas me ayudaron a determinar a que velocidad máxima podía enviar datos sin que se corrompiesen, ajustando un delay que había dentro del bucle del PC.
Una vez conseguí guardar unas cuantas fotos perfectamente en el Spectrum, intenté hacer lo mismo pero con archivos .Z80. Sólo que en lugar de volcar en la memoria de vídeo, lo hice en la RAM por encima de la RAMTOP ajustada al máximo para tener el máximo espacio, y grabados a disco con SAVE "nombre.Z80" CODE direccion,bytes , pero esto limita mucho el tamaño máximo que puede tener un archivo Z80, que normalmente son más grandes y no caben. Las pruebas con archivos Z80 pequeños (juegos para spectrum 16K) funcionaron perfectamente al ejecutarlos con el comando SPECTRUM del +2e.
Entonces se me ocurrió que en lugar de escribir en la RAM para luego guardar en disco que quizás se podría guardar en disco directamente abriendo un archivo binario en modo escritura. Examiné los comandos del +3e (http://www.worldofspectrum.org/zxplus3e ... mands.html) y no parecía complicado, pero los datos se corrompen, los ficheros creados tenían justo el doble de bytes que el original. Me di cuenta que cuando yo escribía un byte, en realidad se escribían 2, entonces forcé a cambiar el puntero de escritura al fichero para que el siguiente byte a escribir lo hiciera encima de ese segundo byte que no se de donde salía, con esto conseguí al menos que el tamaño del archivo generado fuera igual que el original pero aún así al ejecutarlo con el comando SPECTRUM no funcionaba, seguramente los datos estaban corruptos.
No se si es un problema de mi programa (algo muy simple) o del +2E que no funciona correctamente.
La verdad es que llegado a este punto y no poder llenar el "disco duro" de cosas hacen del +2E algo bastante inútil.

Perdón por la parrafada.

Avatar de Usuario
wilco2009
Freddy Hardest
Mensajes: 543
Registrado: Lun Sep 17, 2012 9:40 am
Ubicación: Valencia

Re: Abrir ficheros binarios en +2E

Mensaje por wilco2009 » Mar Oct 16, 2012 5:09 pm

Sin conocer mucho la sintaxis del +3E, eso que cuentas suena a que la escritura es en modo 16 bits. Si es así hay que tener en cuenta que el Z80 (al igual que los procesadores de Intel) utiliza codificación little endian. Eso significa que los primeros 8 bits son los menos significativos.
Debería intentar a leer los datos en parejas y darles la vuelta antes de escribirlos a ver si así funciona.

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 5:25 pm

wilco2009 escribió:Sin conocer mucho la sintaxis del +3E, eso que cuentas suena a que la escritura es en modo 16 bits. Si es así hay que tener en cuenta que el Z80 (al igual que los procesadores de Intel) utiliza codificación little endian. Eso significa que los primeros 8 bits son los menos significativos.
Debería intentar a leer los datos en parejas y darles la vuelta antes de escribirlos a ver si así funciona.


No entiendo muy bien como hacerlo, porque si yo quiero escribir digamos un byte con el valor en decimal digamos 160 con
PRINT #6, 160
y el spectrum escribe 160 y en la siguiente posición del archivo 255
no puedo hacer nada para darle la vuelta, o almenos no se me ocurre

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Mar Oct 16, 2012 5:51 pm

wilco2009 escribió:Sin conocer mucho la sintaxis del +3E, eso que cuentas suena a que la escritura es en modo 16 bits. Si es así hay que tener en cuenta que el Z80 (al igual que los procesadores de Intel) utiliza codificación little endian. Eso significa que los primeros 8 bits son los menos significativos.
Debería intentar a leer los datos en parejas y darles la vuelta antes de escribirlos a ver si así funciona.


No creo que sea eso. Las rutinas BASIC funcionan independientemente de lo que tengas pinchado como disco duro. De hacer la traducción de 16 bits a 8 bits y viceversa se encargan las rutinas de la ROM del +2E (la parte del +3DOS parcheada que es en esencia un +2E)

Postea por aquí el programa en BASIC del 128K a ver si damos con la tecla.

La otra utildiad que intentaste para pasarte cosas a la compact flash, ¿qué utilidad es? Yo tengo hecha una que si bien no funciona aún con unidades con "halved sectors", sí que funciona para imágenes en formato HDF que estén en ese formato. Es la que usa internamente el programa "Strowsaw". A ver si encuentro por algún sitio el post o e-mail donde indico cómo usarla para el caso "halved sector".
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Mar Oct 16, 2012 5:53 pm

mittemot escribió:y el spectrum escribe 160 y en la siguiente posición del archivo 255
no puedo hacer nada para darle la vuelta, o almenos no se me ocurre


¿Cómo compruebas lo que has leído? Es decir, ¿cómo sabes que en la siguiente posición del archivo hay un 255? Si lo estás haciendo leyendo directamente los sectores de la CF desde el PC, entonces claro que te sale eso, por el tema del "halved sector".

Otra cosa: el PRINT que haces debería terminar en ";" porque si no, escribe el byte que quieres y a continuación, el carácter de retorno de carro. ¿No será eso lo que te está pasando?
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 6:48 pm

mcleod_ideafix escribió:
mittemot escribió:y el spectrum escribe 160 y en la siguiente posición del archivo 255
no puedo hacer nada para darle la vuelta, o almenos no se me ocurre


¿Cómo compruebas lo que has leído? Es decir, ¿cómo sabes que en la siguiente posición del archivo hay un 255? Si lo estás haciendo leyendo directamente los sectores de la CF desde el PC, entonces claro que te sale eso, por el tema del "halved sector".

Otra cosa: el PRINT que haces debería terminar en ";" porque si no, escribe el byte que quieres y a continuación, el carácter de retorno de carro. ¿No será eso lo que te está pasando?


porque una vez creado el archivo leo sus bytes con un input # dentro de un bucle y los comparo con el original, no leo directamente desde los sectores de la CF y menos desde el PC (de hecho no entiendo porque dices esto).
Lo del Print también lo tuve en cuenta y puse ; pero no había diferencia.

De todas formas ¿hay alguna forma de pasar archivos Z80 menos engorrosa y sobre todo que funcione?

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 6:53 pm

mcleod_ideafix escribió:
wilco2009 escribió:Sin conocer mucho la sintaxis del +3E, eso que cuentas suena a que la escritura es en modo 16 bits. Si es así hay que tener en cuenta que el Z80 (al igual que los procesadores de Intel) utiliza codificación little endian. Eso significa que los primeros 8 bits son los menos significativos.
Debería intentar a leer los datos en parejas y darles la vuelta antes de escribirlos a ver si así funciona.


No creo que sea eso. Las rutinas BASIC funcionan independientemente de lo que tengas pinchado como disco duro. De hacer la traducción de 16 bits a 8 bits y viceversa se encargan las rutinas de la ROM del +2E (la parte del +3DOS parcheada que es en esencia un +2E)

Postea por aquí el programa en BASIC del 128K a ver si damos con la tecla.

La otra utildiad que intentaste para pasarte cosas a la compact flash, ¿qué utilidad es? Yo tengo hecha una que si bien no funciona aún con unidades con "halved sectors", sí que funciona para imágenes en formato HDF que estén en ese formato. Es la que usa internamente el programa "Strowsaw". A ver si encuentro por algún sitio el post o e-mail donde indico cómo usarla para el caso "halved sector".


el Strowsaw no me leia nada de la tarjeta, eso sí, luego la volvia a conectar al Spectrum y ahí estaban los archivos

El código era algo así (de memoria) , no puedo acceder ahora a él pq está en el "hdd" del spectrum y no lo tengo aquí.

10 FORMAT LPRINT "R"
20 LET A=0
30 OPEN #4 "O>PROGRAMA.Z80"
40 FOR C=0 TO 10000 : REM LONGITUD DE ARCHIVO
50 INPUT #3,A
60 GO TO #4,C
70 PRINT #4,A;
80 NEXT C
90 CLOSE #4:CLOSE #3

es muy básico y ya digo que recibiendo datos del puerto serie funciona perfectamente.

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Mar Oct 16, 2012 7:26 pm

mittemot escribió:porque una vez creado el archivo leo sus bytes con un input # dentro de un bucle y los comparo con el original, no leo directamente desde los sectores de la CF y menos desde el PC (de hecho no entiendo porque dices esto).


Pues porque la interface que te has hecho, la de 8 bits simple, sólo usa la mitad de la capacidad de la CF. Eso significa que cuando se escriben datos en un sector de 512 bytes de la CF, sólo escribe 256 de esos 512. Entre cada byte con información y el siguiente, la CF almacena precisamente un FFh. Por eso, cuando dijiste que al leer leías un byte bien y otro a 255, pensé que lo estabas haciendo así, directamente sobre la tarjeta en el PC.

mittemot escribió:De todas formas ¿hay alguna forma de pasar archivos Z80 menos engorrosa y sobre todo que funcione?

No, que yo sepa. Es por eso por lo que escribí "3e", y un poco más tarde, Davide Guida escribió el front-end "Strowsaw" que ya conoces.
Lo malo es que yo nunca he usasdo este tipo de interfaces de 8 bits. He usado un DivIDE y una interface ZXMMC, y en ambos casos, se usa toda la capacidad de la tarjeta, por lo que "3e" de momento sólo funciona con dispositivos que usen sectores de 512 bytes completos.

Hace algún tiempo pude dotar a "3e" de la capacidad de manejar dispositivos de 8 bits, pero no a través del dispositivo físico, sino a través de imágenes en formato HDF de ese dispositivo. Es decir, tú coges tu CF, y con un programa, creo recordar que era de Pera Putnik, copias el contenido de la CF a un fichero en el PC con extensión HDF. Si la CF estaba configurada para usarse con una interface de 8 bits, tienes la opción de crear la imagen HDF en modo "halved sector". Esos ficheros HDF sí que los soporta "3e", así que la cosa sería:

- Con la utilidad de Pera Putnik (ahora mismo no recuerdo cómo se llama), haz un vocado de tu CF en modo "halved sector" a un archivo en tu PC
- Usa Strowsaw y abre el fichero imagen HDF. Deberías poder ver entonces la estructura de particiones y ficheros.
- Cuando hayas pasado a la imagen todos los ficheros Z80 que querías pasar, cierra Strowsaw y con la utilidad de Pera Putnik, haz la operación inversa de copiar la imagen HDF a la CF.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Mar Oct 16, 2012 7:34 pm

El programa de Pera Putnik al que me refería es éste:
http://hardware.speccy.org/temp/drimgs.html

Y la opción a marcar en tu caso es HDF256.
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 7:43 pm

mcleod_ideafix escribió:
Pues porque la interface que te has hecho, la de 8 bits simple, sólo usa la mitad de la capacidad de la CF. Eso significa que cuando se escriben datos en un sector de 512 bytes de la CF, sólo escribe 256 de esos 512. Entre cada byte con información y el siguiente, la CF almacena precisamente un FFh. Por eso, cuando dijiste que al leer leías un byte bien y otro a 255, pensé que lo estabas haciendo así, directamente sobre la tarjeta en el PC.

No, que yo sepa. Es por eso por lo que escribí "3e", y un poco más tarde, Davide Guida escribió el front-end "Strowsaw" que ya conoces.
Lo malo es que yo nunca he usasdo este tipo de interfaces de 8 bits. He usado un DivIDE y una interface ZXMMC, y en ambos casos, se usa toda la capacidad de la tarjeta, por lo que "3e" de momento sólo funciona con dispositivos que usen sectores de 512 bytes completos.

Hace algún tiempo pude dotar a "3e" de la capacidad de manejar dispositivos de 8 bits, pero no a través del dispositivo físico, sino a través de imágenes en formato HDF de ese dispositivo. Es decir, tú coges tu CF, y con un programa, creo recordar que era de Pera Putnik, copias el contenido de la CF a un fichero en el PC con extensión HDF. Si la CF estaba configurada para usarse con una interface de 8 bits, tienes la opción de crear la imagen HDF en modo "halved sector". Esos ficheros HDF sí que los soporta "3e", así que la cosa sería:

- Con la utilidad de Pera Putnik (ahora mismo no recuerdo cómo se llama), haz un vocado de tu CF en modo "halved sector" a un archivo en tu PC
- Usa Strowsaw y abre el fichero imagen HDF. Deberías poder ver entonces la estructura de particiones y ficheros.
- Cuando hayas pasado a la imagen todos los ficheros Z80 que querías pasar, cierra Strowsaw y con la utilidad de Pera Putnik, haz la operación inversa de copiar la imagen HDF a la CF.


Te refieres a este programa ?

http://rst.serveblog.net/photoweb/drimg.png

porque ya lo probé en su dia y no funcionaba, salía como si todo el contenido del la unidad fuera caótico, quizás no supiera utilizarlo porque no tengo claro esto del halved sector

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Mar Oct 16, 2012 7:51 pm

mittemot escribió:Te refieres a este programa ?

http://rst.serveblog.net/photoweb/drimg.png

porque ya lo probé en su dia y no funcionaba, salía como si todo el contenido del la unidad fuera caótico, quizás no supiera utilizarlo porque no tengo claro esto del halved sector


Ese mismo. Prueba a copiar con él desde la CF a un fichero HDF activando el modo HD256. Si así lo pilla Strowsaw, es que la copia ha sido correcta :)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Mar Oct 16, 2012 7:56 pm

mcleod_ideafix escribió:
mittemot escribió:Te refieres a este programa ?

http://rst.serveblog.net/photoweb/drimg.png

porque ya lo probé en su dia y no funcionaba, salía como si todo el contenido del la unidad fuera caótico, quizás no supiera utilizarlo porque no tengo claro esto del halved sector


Ese mismo. Prueba a copiar con él desde la CF a un fichero HDF activando el modo HD256. Si así lo pilla Strowsaw, es que la copia ha sido correcta :)


Muchas gracias por la información, en cuanto lo pruebe ya comentaré aquí los resultados.

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Jue Nov 15, 2012 1:56 am

Bueno ya lo probé y aparentemente funciona, puedo leer y escribir ficheros.
El problema es que tarda una eternidad en leer y sobre todo en grabar la imagen de disco.
aún así los ficheros .Z80 no le ejecutan (se cuelga o reinicia el ordenador), deben perder la integridad o yo que se
el caso es que los SCR si funcionan perfectamente

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mcleod_ideafix » Jue Nov 15, 2012 4:13 am

mittemot escribió:Bueno ya lo probé y aparentemente funciona, puedo leer y escribir ficheros.
El problema es que tarda una eternidad en leer y sobre todo en grabar la imagen de disco.
aún así los ficheros .Z80 no le ejecutan (se cuelga o reinicia el ordenador), deben perder la integridad o yo que se
el caso es que los SCR si funcionan perfectamente


Los ficheros Z80 debes grabarlos sin cabecera de +3DOS (binary mode en el StrowSaw)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
mittemot
Herbert
Mensajes: 75
Registrado: Mar Oct 16, 2012 8:42 am
Ubicación: Castellón
Contactar:

Re: Abrir ficheros binarios en +2E

Mensaje por mittemot » Dom Nov 18, 2012 1:22 pm

mcleod_ideafix escribió:
mittemot escribió:Bueno ya lo probé y aparentemente funciona, puedo leer y escribir ficheros.
El problema es que tarda una eternidad en leer y sobre todo en grabar la imagen de disco.
aún así los ficheros .Z80 no le ejecutan (se cuelga o reinicia el ordenador), deben perder la integridad o yo que se
el caso es que los SCR si funcionan perfectamente


Los ficheros Z80 debes grabarlos sin cabecera de +3DOS (binary mode en el StrowSaw)


Los ficheros están bien grabados, y es que después de fijarme más, a veces sí cargan los Z80 y otras no, a veces se carga la pantalla del menu (o lo que fuera que se tiene que ver) y se queda bloqueado. Es curioso porque cuando acabo de encender la máquina el primer juego suele cargar, después de un rato ya no carga ninguno. No sé si será problema de alimentación y al principio la fuente tira un poco más y luego baja. Uso la original del +2a y con ella alimento todo.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados