cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Moderador: Fundadores

Responder
Avatar de Usuario
España Popopo
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2659
Registrado: 05 Nov 2019, 15:25
Has thanked: 3745 times
Been thanked: 653 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por Popopo » 02 Mar 2021, 21:17

javier2112 escribió:
02 Mar 2021, 17:10
Lo del color no creo que sea complicado añadirlo, pero ¿sabes una cosa? En el spectrum +3e se pueden poner los colores que desees y hacer permanentes esos cambios, que se almacenan en el disco duro. Por ejemplo:

Código: Seleccionar todo

BOORDER 1
SPECTRUM PAPER 1: SPECTRUM INK 6 ASN
Con esto tendrías los colores del Amstrad CPC de manera permanente. Mas información:+3e commands
Ostras como mola! ni lo imaginaba
Gracias

Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 79
Registrado: 11 Mar 2017, 01:21
Has thanked: 15 times
Been thanked: 24 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por desUBIKado » 05 Mar 2021, 20:57

He compilado una custom rom para usarla en el ZX-Uno con soporte divMMC usando los siguientes parámetros:

Código: Seleccionar todo

        output  plus3e_ES_divmmc_TAP_ZX-Uno.rom 
        define  spanish 1
        define  v41     0
        define  garry   1
        define  mmcen   $e7
        define  mmcdata $eb
        define  curkl   0
        define  carmel  1

        define  zx_tap	1
 
        include plus3.asm
Y la rom plus3e_ES_divmmc_TAP_ZX-Uno.rom generada funciona perfectamente cargando los .TAP

¡Genial!


Avatar de Usuario
España antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Has thanked: 1 time
Been thanked: 19 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por antoniovillena » 05 Mar 2021, 23:51

Acabo de ver este hilo. He importado los fuentes de sourceforge a github y añadido los cambios de Spirax:

https://github.com/antoniovillena/EmuSc ... r/plusROMs

Si sabéis manejar control de versiones no tengo problema en dar acceso de escritura al repositorio

Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 79
Registrado: 11 Mar 2017, 01:21
Has thanked: 15 times
Been thanked: 24 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por desUBIKado » 07 Mar 2021, 13:15

He seguido trasteando con la rom preparada para divMMC en mi ZX-Uno, y me he dado cuenta de 2 cosas:
  1. Los ficheros .TAP tienen que ser sin cabecera +3DOS. Si la tienen entonces no cargan.
  2. Los fichero con un guión en el nombre no cargan. Por ejemplo, SPECTRUM "META-48K.TAP" da el error NOMBRE INCORRECTO, 0:1

Avatar de Usuario
España javier2112
Demonio tercer orden
Demonio tercer orden
Mensajes: 821
Registrado: 30 Oct 2014, 12:36
Ubicación: Málaga
Has thanked: 54 times
Been thanked: 97 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por javier2112 » 11 Mar 2021, 19:55

Hola.

Ya tengo todos los cambios implementados, pero el correspondiente a la rutina de formateo de discos optimizada de la ROM 1 no me acaba de ir bien y esperaba que me pudierais echar una mano. Veamos:
Tengo comprobado que haciendo las siguientes sustituciones de la ROM v41 se consigue el efecto deseado:
1) Sustituir

Código: Seleccionar todo

0eff f14f af57 cd6f 031e e506 0721 11ed
Por:

Código: Seleccionar todo

0eff f14f af57 cd00 391e e506 0721 11ed
Con esto se consigue que se llame a una rutina de fill distinta para el formateo de una pista (secuencia de bytes CD0039), localizada en la dirección $3900.

2) Sustituir en la posición $3900 una zona vacía de la ROM (contiene 0s) por la siguiente secuencia, con la nueva rutina:

Código: Seleccionar todo

21 34 ED 06 09 36 02 2B C5 E5 21 1D 39 48 06 00 09 46 E1 70 C1 2B 36 00 2B 72 2B 10 E8 C9
Esto funciona y está probado. Ahora ya solo queda trasladarlo al fichero plus3.asm de los fuentes. Esto en principio es sencillo, pues la llamada a esta rutina la he localizado cerca de la etiqueta m0345, que contiene lo siguiente:

Código: Seleccionar todo

	(...)
m0345   ld      d,a
        call    m036f           ; fill format buffer
        ld      e,$e5           ; filler byte
        ld      b,$07           ; page 7
	(...)
Se trata de cambiarlo por esto:

Código: Seleccionar todo

m0345   ld      d,a
        call    newfill         ; new fill format buffer for interleave factor 3
        ld      e,$e5           ; filler byte
        ld      b,$07           ; page 7
La rutina newfill es la que he puesto más arriba

Código: Seleccionar todo

21 34 ED 06 09 36 02 2B C5 E5 21 1D 39 48 06 00 09 46 E1 70 C1 2B 36 00 2B 72 2B 10 E8 C9
Al desensamblarla tenemos esto:

Código: Seleccionar todo

	ld hl,$0ed34		;3900
	ld b,$009		;3903
	ld (hl),$002		;3905
	dec hl			;3907
	push bc			;3908
	push hl			;3909
	ld hl,$0391d		;390a
	ld c,b			;390d
	ld b,$000		;390e
	add hl,bc			;3910
	ld b,(hl)			;3911
	pop hl			;3912
	ld (hl),b			;3913
	pop bc			;3914
	dec hl			;3915
	ld (hl),$000		;3916
	dec hl			;3918
	ld (hl),d			;3919
	dec hl			;391a
	djnz $-22		;391b
	ret			;391d
Yo la he trasladado en el fichero fuente de esta manera para que sea reubicable:

Código: Seleccionar todo

newfill                         
        ld      hl,tmp_buff+$23 ; tmp_buff es una constante con valor es $ed11
        ld      b,$09
fill_loop:
        ld      (hl),$02
        dec     hl
        push    bc
        push    hl
        ld      hl,fill_ret
        ld      c,b
        ld      b,$00
        add     hl,bc
        ld      b,(hl)
        pop     hl
        ld      (hl),b
        pop     bc
        dec     hl
        ld      (hl),$00
        dec     hl
        ld      (hl),d
        dec     hl
        djnz    fill_loop
fill_ret: ret

Ya solo falta adaptar este código para que compile condicionalmente. He generado las roms y de hecho puedo formatear un disco con la nueva rutina, pero al acceder al disco con CAT obtengo el mensaje de error:
SIN DATOS

Posiblemente sea una tontería que se me ha pasado por alto. ¿Alguien me puede ayudar a terminar con estar tarea?

Gracias.

Avatar de Usuario
España javier2112
Demonio tercer orden
Demonio tercer orden
Mensajes: 821
Registrado: 30 Oct 2014, 12:36
Ubicación: Málaga
Has thanked: 54 times
Been thanked: 97 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por javier2112 » 11 Mar 2021, 21:28

Hola otra vez.

Suele pasar que en cuanto uno le cuenta a alguien que no consigue solucionar un problema, esto te ayuda a resolverlo, y eso es lo que me ha pasado. Ya tengo lista la ROM con todas las mejoras que mencioné semanas atrás, que afectan exclusivamente a la ROM 1:
1) Nuevos parámetros de compilación condicional:
- euro=1 para sustituir el símbolo de la peseta o de la libra por el del euro.
- floppy35=1 activar solo si se van a usar disqueteras de 3,5" (mejora velocidad de acceso, altera step rate). Obtenida de la bluerom: https://www.secarica.ro/index.php/en/zx-zone/plus3-rom
- bluerom=1, incorpora otras de las características de la bluerom: por ejemplo, una rutina de formateo con factor interleave optimizado para unidad 3" (mejora velocidad acceso) o el comando COPY, que envía las 24 líneas completas a impresora.
Si van a generar las ROMs para +3e (garry=1) recomiendo activar esta opción.

Además con el parámetro mhfont a valor 1, se puede seleccionar el mapa de caracteres que incorporaban las utilidades de +3 de la revista Microhobby (similar al del Amstrad CPC).
Solo disponible en español (spanish=1).

2) Simplificada la gestión del espacio libre en el código fuente para que ROM tenga exactamente 16384 bytes. Con ello se han eliminado unos pocos defs y se ha añadido el siguiente:
defs 0x0 + (0x3e80-$)
antes de la etiqueta m3e80.

3) En etiqueta m3781 de ROM 1, corregido mensaje "FUERA DE XDPB" (antes ponía XBPD).

4) Otros cambios menores en los mensajes, según sea un DIVIDE o un MMC lo que hayamos seleccionado.

A la espera de que Antonio Villena conteste a mi solicitud de acceso en modo escritura a su repositorio, dejo aquí un enlace con el resultado:
https://drive.google.com/drive/folders/ ... sp=sharing

Ahora es cuestión de que lo probéis y me digáis si veis alguna cosa que no cuadre, y por supuesto, se admiten sugerencias.



Saludos.
Última edición por javier2112 el 12 Mar 2021, 17:26, editado 1 vez en total.

Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 79
Registrado: 11 Mar 2017, 01:21
Has thanked: 15 times
Been thanked: 24 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por desUBIKado » 11 Mar 2021, 22:07

javier2112 escribió:
11 Mar 2021, 21:28
Ahora es cuestión de que lo probéis y me digáis si veis alguna cosa que no cuadre, y por supuesto, se admiten sugerencias.
Los ficheros con un guión en el nombre no cargan. Por ejemplo, SPECTRUM "META-48K.TAP" da el error NOMBRE INCORRECTO, 0:1

¿Se trata de un error? ¿Es posible solucionarlo?

Avatar de Usuario
España javier2112
Demonio tercer orden
Demonio tercer orden
Mensajes: 821
Registrado: 30 Oct 2014, 12:36
Ubicación: Málaga
Has thanked: 54 times
Been thanked: 97 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por javier2112 » 11 Mar 2021, 23:30

desUBIKado escribió:
11 Mar 2021, 22:07
javier2112 escribió:
11 Mar 2021, 21:28
Ahora es cuestión de que lo probéis y me digáis si veis alguna cosa que no cuadre, y por supuesto, se admiten sugerencias.
Los ficheros con un guión en el nombre no cargan. Por ejemplo, SPECTRUM "META-48K.TAP" da el error NOMBRE INCORRECTO, 0:1

¿Se trata de un error? ¿Es posible solucionarlo?
He mirado por encima el código fuente de la rutina y no vi nada específico que restrinja el nombre de esa manera, por lo que eso debería ser así en todas las operaciones que realizan con ficheros en disco. Así que he probado algo asó como

Código: Seleccionar todo

SAVE "PR-1.BAS"
Y efectivamente da el mismo error. Para salir de cualquier duda, no hay más que consultar el manual del Spectrum +3, donde en el capítulo 20 dice lo siguiente:
The name field of a filename is the only field that you have to
specify when using SAVE, LOAD, etc. The name field can be from 1 to 8
characters long and may contain any of the following:

Letters: abcdefghijklmnopqrstuvwxyz (upper or lower case)
Digits: 0123456789
Other characters: "#$'@^_{}~`
Así que está confirmado: no es un error, sino una característica (supongo que impuesta por la compatibilidad con ficheros CP/M).


Saludos.

Avatar de Usuario
España_Comunidad_Valenciana flopping
Fundador
Fundador
Mensajes: 9789
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Has thanked: 2 times
Been thanked: 345 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por flopping » 11 Mar 2021, 23:48

El guion no está entre los caracteres aceptados.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2021, 39 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
desUBIKado
Le gustan las llamas
Le gustan las llamas
Mensajes: 79
Registrado: 11 Mar 2017, 01:21
Has thanked: 15 times
Been thanked: 24 times
Contactar:

Re: cargando TAPs en un +3 con ROM´s +3e [LOGRADO]

Mensaje por desUBIKado » 12 Mar 2021, 00:05

Gracias por aclararme lo del guión.

Responder

Volver a “Sinclair”

¿Quién está conectado?

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