Avances en el desarrollo del ZX-Uno

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 15 Mar 2014, 03:02

No me lo puedo creer...

El puñetero T80... pasa olímpicamente de actualizar los flags cuando se ejecuta una instrucción LD A,R o bien LD A,I . Sólo actualiza el flag P. Los demás, no los toca. Sin embargo, según la guía del Z80 Indocumentado, se tocan todos los flags excepto el de acarreo.

¿Y qué pasa? Pues que el King's Valley depende en su lógica de que dicha instrucción funcione correctamente. En un montón de sitios en el programa hay bucles que sólo salen cuando se da esta condición:

Código: Seleccionar todo

LD A,R
RET M


Y claro... El flag de signo jamás se actualiza con la instrucción anterior, y por tanto, el bucle donde esté esto deviene en bucle infinito.

Concretamente, en la descripción de la última versión del T80 publicada en OpenCores te puedes encontrar esto:

Código: Seleccionar todo

            if Special_LD(2) = '1' then
               case Special_LD(1 downto 0) is
               when "00" =>
                  ACC <= I;
                  F(Flag_P) <= IntE_FF2;
               when "01" =>
                  ACC <= std_logic_vector(R);
                  F(Flag_P) <= IntE_FF2;
               when "10" =>
                  I <= ACC;
               when others =>
                  R <= unsigned(ACC);
               end case;
            end if;
         end if;


Esta es la parte de descripción que maneja las cargas "especiales" (desde/hacia los registros I y R). Los dos primeros casos son los que cubren las instrucciones LD A,I y LD A,R respectivamente. ¿No falta algooooooo? Si no lo veis, echad un vistazo a la página 27 del Z80 Undocumented de Sean Young y vereis. Ese trozo de código debería ser así (o si no así, algo parecido):

Código: Seleccionar todo

            if Special_LD(2) = '1' then
               case Special_LD(1 downto 0) is
               when "00" =>
                  ACC <= I;
                  F(Flag_P) <= IntE_FF2;
                  F(Flag_S) <= I(7);
                  if I(7 downto 0) = "00000000" then
                     F(Flag_Z) <= '1';
                  else
                     F(Flag_Z) <= '0';
                  end if;
                  F(Flag_Y) <= I(5);
                  F(Flag_H) <= '0';
                  F(Flag_X) <= I(3);
                  F(Flag_N) <= '0';
               when "01" =>
                  ACC <= std_logic_vector(R);
                  F(Flag_P) <= IntE_FF2;
                  F(Flag_S) <= R(7);
                  if R(7 downto 0) = "00000000" then
                     F(Flag_Z) <= '1';
                  else
                     F(Flag_Z) <= '0';
                  end if;
                  F(Flag_Y) <= R(5);
                  F(Flag_H) <= '0';
                  F(Flag_X) <= R(3);
                  F(Flag_N) <= '0';
               when "10" =>
                  I <= ACC;
               when others =>
                  R <= unsigned(ACC);
               end case;
            end if;
         end if;


DIcho y hecho: King's Valley funciona. Cobra funciona (¡¡la primerísima versión, con puerto $FF!!). No echemos aún las campanas al vuelo. Cosas como el ula-test3-modified siguen colgándose, pero vamos, para un enfermito convaleciente es suficiente por hoy :P

Imagen

Se ha actualizado el test11 con estos cambios. A sugerencia de Andrew Owen, he puesto en el MCS la versión estable (4.0) de la Open SE.

Nota informativa: en este momento, estamos al 87% de ocupación total de la FPGA.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 15 Mar 2014, 03:30

aowen escribió:Making the core compatible with the Chloe 280SE with SE Basic IV as the native firmware would enable the machine to run the following emulators in software without reprogramming the FPGA:


:?:

¿ Significa eso que en el ZXUNO podemos ejecutar cualquier sistema Z80 solo poniendo el "core" en una tarjeta SD (por ejemplo)? =P~

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 15 Mar 2014, 03:36

jepalza escribió:
aowen escribió:Making the core compatible with the Chloe 280SE with SE Basic IV as the native firmware would enable the machine to run the following emulators in software without reprogramming the FPGA:


:?:

¿ Significa eso que en el ZXUNO podemos ejecutar cualquier sistema Z80 solo poniendo el "core" en una tarjeta SD (por ejemplo)? =P~


No exactamente. Significa que la plataforma Chloe 280SE es lo suficientemente flexible (en mapeado de memoria se refiere) como para poder implementar de manera sencilla emuladores de otros micros basados en Z80, e incluso algunos otros que no están basados en Z80 (si no te importa que vaya más lento). Piensa por ejemplo que con la flexibilidad del mapeo de memoria del +3 ya se pueden ejecutar emuladores de PacMan. El 280SE tiene aun mayor flexibilidad. No sería un clon, sería una emulación (parcial).
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 15 Mar 2014, 04:22

He estado probando el TEST11 (pero con mi parche de arrancar mediante "BORDER x" que por cierto, deberías probar, es super cómodo no tener que cargar el "TESTROM.TAP" cada vez que enciendes o cambias algo al firm) y por ahora todo bien, pero pregunta bastante idiota: ¿cómo se cargan TAP desde el +3E? :?: >| (o no se puede y yo pienso que sí)

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 15 Mar 2014, 06:29

No, no se puede. 3e no es más (ni menos) que extensiones al +3DOS para manejar tarjetas de memoria como si fueran disquetes. La única novedad gorda respecto de un +3 normal es el uso del comando SPECTRUM para lanzar snapshots en formato Z80 o SNA. Con strowsaw puedes pasar el contenido de un TAP a la tarjeta, pero te toca a ti convertir el cargador BASIC para que cargue las cosas de disco. A veces es trivial, como en la Shock Megademo, que ya estaba preparada, y a veces es complicado, como me pasó con el juego "Where Time Stood Still"
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
aowen
Commodore 128
Commodore 128
Mensajes: 90
Registrado: 14 Mar 2014, 14:31
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum +2
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy

Re: Avances en el desarrollo del ZX-Uno

Mensajepor aowen » 15 Mar 2014, 10:42

mcleod_ideafix escribió:No me lo puedo creer...

El puñetero T80...


All the bugs in the T80 core are known and fixed. I think both Chris Smith and Jeff Braine have the details. I'll ask them. Edit: I did ask them, and apparently Chris's fixes are specific to his implementation, but you might want to check in with him and compare notes.

Todos los errores en el core del T80 se conocen y se han arreglado. Creo que tanto Crhis Smith como Jeff Braine tienen los detalles. Les preguntaré.
Edición: Les he preguntado y aparentemente los arreglos (fixes) de Chris son específicos para su implementación, pero podéis contactar con él y comparar notas.


jepalza escribió:
aowen escribió:Making the core compatible with the Chloe 280SE with SE Basic IV as the native firmware would enable the machine to run the following emulators in software without reprogramming the FPGA:


:?:

¿ Significa eso que en el ZXUNO podemos ejecutar cualquier sistema Z80 solo poniendo el "core" en una tarjeta SD (por ejemplo)? =P~


Well on boot you have to configure the FPGA to be whatever kind of Spectrum you want. One of those options is a Chloe 280SE. I'm not aware of the specifics of the design, but if the the core sits on the SD card and is loaded at boot then yes, you would only need the Chloe 280SE core on the SD card to run software for any Spectrum except for the +3. The Chloe 280SE does not support +3DOS, but there aren't very many programs that require +3DOS. The Chloe 280SE combines the paging of the Timex and the Spectrum 128 and can therefore emulate the TC2068 and dual ROM systems like the majority of 128K Spectrums. Each emulator takes up only the space required by the ROMs and a short loader, which is usually between 16K and 32K and of course it's possible to support multiple language versions. 16K ROMs require no patching. 32K ROMs require patching to change how paging works, but this isn't a problem as complete disassemblies are available for the 128 ROMs.

Bueno, en el arranque tienes que configurar la FPGA para que sea cualquier tipo de spectrum que desees. Una de esas opciones es un Chloe 280SE. No se mucho de los detalles del diseño, pero si el core está almacenado en la tarjeta SD y se carga en el arranque entonces sí, sólo necesitarías el core Chloe 280SE en la tarjeta SD para ejecutar programas para cualquier spectrum a excepción del +3. El Chloe 280SE no es compatible con +3DOS, pero no hay muchos programas que necesiten el +3DOS. Chloe 280SE combina la paginación del Timex y del Spectrum 128 y por lo tanto puede emular el TC2068 y sistema con rom doble como la mayoría de spectrums 128K. Cada emulador ocupa sólo el espacio necesario para la ROM y un cargardor pequeño, el cual está normalmente entre 16k y 32k, y por supuesto es posible usar versiones con otros idiomas. Las roms de 16K no requieren parcheo (patching), las de 32K sí para cambiar el modo en que funciona la paginación, pero esto no es problema ya que los desemsamblados están disponibles para las roms 128K.


mcleod_ideafix escribió:Piensa por ejemplo que con la flexibilidad del mapeo de memoria del +3 ya se pueden ejecutar emuladores de PacMan. El 280SE tiene aun mayor flexibilidad. No sería un clon, sería una emulación (parcial).


Although you can run software in the address space 0x0000 to 0x3FFF on the +3, you only get one 16K page of RAM there and it is contended (so everything runs slower). The Chloe 280SE has two sideways banks of 64K, pageable in chunks of 8K, and the only RAM pages that are contended are the video pages (bank 5 and 7).

Aunque puedes ejecutar software en el espacio de direcciones desde 0x0000 hasta 0x3FFF en el +3, solo puedes acceder a una página de RAM de 16K y está contenida (contended) (y todo funciona más lento). El Chloe 280SE tiene dos bancos laterales (sideways banks) de 64K, paginables en trozoz de 8K, y las únicas páginas RAM que están contenidas (contended) son las páginas de vídeo (el banco 5 y 7).
Última edición por aowen el 01 Abr 2014, 11:10, editado 1 vez en total.

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 15 Mar 2014, 11:38

aowen escribió:Well on boot you have to configure the FPGA to be whatever kind of Spectrum you want. One of those options is a Chloe 280SE. I'm not aware of the specifics of the design, but if the the core sits on the SD card and is loaded at boot then yes, you would only need the Chloe 280SE core on the SD card to run software for any Spectrum except for the +3.


Ooooook! Understand you. Maybe goes to try it in zxuno. Quizás lo pruebe en el zxuno.

Avatar de Usuario
aowen
Commodore 128
Commodore 128
Mensajes: 90
Registrado: 14 Mar 2014, 14:31
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum +2
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy

Re: Avances en el desarrollo del ZX-Uno

Mensajepor aowen » 15 Mar 2014, 13:26

jepalza escribió:
aowen escribió:Well on boot you have to configure the FPGA to be whatever kind of Spectrum you want. One of those options is a Chloe 280SE. I'm not aware of the specifics of the design, but if the the core sits on the SD card and is loaded at boot then yes, you would only need the Chloe 280SE core on the SD card to run software for any Spectrum except for the +3.


Ooooook! Understand you. Maybe goes to try it in zxuno. Quizás lo pruebe en el zxuno.


The only problem is there isn't a Chloe 280SE core available yet. You can try it out in the Fuse emulator by selecting the ZX Spectrum SE model, but Fuse doesn't have ULAplus at the moment.
El único problema es que aún no existe un core chloe 280SE disponible. Puedes probarlo en el emulador Fuse seleccionando el modelo ZX Spectrum SE, pero Fuse no tiene por ahora el ULAplus.


Alessandro Dorigatti (creator of the ZX-One FPGA core) has the latest T80 patches. Unfortunately I've mislaid his contact details.
Alessandro Dorigatti (creador del core FPGA del ZX-Uno) tiene los últimos parches del T80. Desafortunadamente he extraviado su dirección de contacto.


mcleod_ideafix escribió:¿Blanco sobre fondo azul? No puedes hacer eso en modo HiRes.


Yes you can. You just have to enable the ULAplus palette. Then you can have any two out of the 256 color palette. Also you should be able to change mode on a scanline so you can have the logo in 8x1 attribute color, and any text in hi-res mode.
Sí que puedes. Solo tienes que activar la paleta del ULAplus. Entonces puedes usar cualquiera de las dos paletas de 256 colores. Además deberías poder cambiar el modo en un scanline de manera que puedas tener el logo en atributos de color 8x1, y cualquier texto en modo alta resolución.


So just in case McLeod_IdeaFix does do a Chloe 280SE core ... here's the badge design.
Solo en caso de que McLeod_Ideafix haga un core Chloe 280SE, aquí está el diseño del logo:


Imagen
Última edición por aowen el 01 Abr 2014, 19:08, editado 1 vez en total.

Avatar de Usuario
aowen
Commodore 128
Commodore 128
Mensajes: 90
Registrado: 14 Mar 2014, 14:31
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum +2
consola_favorita: Nintendo GameBoy
Primera consola: Nintendo GameBoy

Re: Avances en el desarrollo del ZX-Uno

Mensajepor aowen » 17 Mar 2014, 01:12

Oh and just a note that OpenSE Basic refers only to the version 3 branch. Version 4 is just SE Basic IV.
Ah, y solo un apunte, OpenSE Basic se refiere solo a la rama de la versión 3. La versión 4 es sólo SE Basic IV.
Última edición por aowen el 01 Abr 2014, 19:09, editado 1 vez en total.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 17 Mar 2014, 11:35

Bueno, pues entre mocos, ibuprofenos, y mientras espero una llamada telefónica de la consulta de infecciosos, para que me digan de una vez qué bicho es el que tengo, hemos llegado al....

TEST 12

Y en el test12 tenemos ya soporte de DIVMMC + ESXDOS. El MCS ha cambiado con el añadido de un nuevo fichero: la ROM del ESXDOS, versión 0.8.5 para DIVMMC. En el clon, los 8KB de la ROM del DIVMMC deben cargarse a los primeros 8KB de la página 12 de memoria (ver cambios en testrom.asm para ver cómo se hace).

Además, se necesita una tarjeta SD/SDHC formateada en FAT32, y hay que copiar integros los contenidos de las carpetas BIN y SYS que encontrareis dentro de la carpeta ESXDOS085 dentro de test12. Aparte de eso, podeis poner TAP's, SNA's, Z80's, y hasta archivos TRD. Los podeis organizar por directorios en la tarjeta.

Funciona todo (lo que he podido probar) EXCEPTO una cosa: el menú NMI: no consigo que me salga. Se me bloquea la máquina o se resetea :( Lo mismo es una tontería, pero no consigo que aparezca. ESXDOS se puede usar sin embargo sin problemas desde linea de comandos. Ya sabeis, cosas como:

Código: Seleccionar todo

.cd juegos
.tapein arkanoid.tap
LOAD ""


Por cierto: la tecla NMI es Ctrl-Alt-F5 como ya comentamos hace tiempo (era F5, pero para no pulsarla accidentalmente se ha cambiado a una secuencia del tipo Ctrl-Alt-loquesea, como las demás)

Como habreis puesto ficheros con nombres largos y ESXDOS no los acepta (te aparece el nombre 8.3 de MSDOS) recordar que el símbolo ~ se pone en el Spectrum con MODO EXTENDIDO - Shift A. El modo extendido puede obtenerse fácilmente en el ZX-Uno pulsando el tabulador. Así, la secuencia sería Tab, Shift-A.

Una de las novedades de la versión 0.8.5 es la emulación de TR-DOS. La he probado y así es como me ha ido :)

Arranco el clon con la ROM del +3e (aunque va a arrancar en modo 48K) y el DIVMMC activado. ESXDOS carga los ficheros del sistema desde mi tarjeta SDHC sin problemas:
Imagen

Cambio a un directorio en el que tengo un fichero TRD, una imagen de disco TR-DOS, con una demo. Uso el comando .vdisk para "montar" esa imagen de disco en la unidad virtual 0
Imagen

Ahora ya puedo lanzar TR-DOS!!
Imagen

Aquí estamos
Imagen

Puedo usar el comando CAT (modo extendido, shift 9) para listar lo que hay dentro del disquete virtual. Veo que hay un fichero BASIC llamado Reality. Lo cargo con LOAD "Reality"
Imagen

Al cargarlo me da un mensaje de OK. Hago RUN y...
Imagen
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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