- Justo antes de cargar una ROM. Lo hace así porque la ROM puede empezar en la página 8 y para que no se solape con la BIOS esto se hace desde memoria alta.
- Al cargar una Máquina. Son 12 páginas de memoria y en modo BOOTM=0 sólo tenemos acceso a 8, se podría cargar en 2 tandas pero con un riesgo muy alto de que si se produce un error de carga dejamos la configuración a medio grabar. Lo que se hace es ir copiando y conmutando de BOOTM=0 a BOOTM=1 continuamente hasta almacenar las 12 páginas, una vez estén todas en memoria (y estén bien todos los CRCs) se graban a SPI Flash de golpe
Novedades acerca del ZX-Uno
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Novedades acerca del ZX-Uno
El bootloader carga la BIOS en la página 8, pone BOOTM a 0 y salta a 0, ejecutándose la BIOS. La BIOS funciona la mayor parte del tiempo en modo BOOTM=0. Solo se mete en BOOTM=1 en estos casos:
- mcleod_ideafix
- 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: Novedades acerca del ZX-Uno
Creo que ya sé lo que pasa: es la ROM inicial. Ocupa 55 bytes y yo he definido una ROM de 64 bytes (la potencia de 2 más próxima), pero resulta que si al inicializarla con $readmemh() no la llenas entera y quedan posiciones sin inicializar, el sintetizador se carga entera la ROM.
Así que en el bloque "initial" del módulo que implementa la ROM tengo que hacer algo como esto:
Así que en el bloque "initial" del módulo que implementa la ROM tengo que hacer algo como esto:
Código: Seleccionar todo
initial begin
for (i=0;i<64;i=i+1) begin
mem[i] = 8'h00; // primero me aseguro de que toda la memoria está inicializada
end
$readmemh ("bootloader_hex.txt", mem, 0); // luego cambio alguno de sus valores desde el fichero
end
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Novedades acerca del ZX-Uno
Si quieres te puedo pasar los archivos modificados del test12 con los que funciona, y poco a poco le vas metiendo tus cambios del test13 hasta dar con el error.
-- Actualizado 22 Abr 2014, 05:51 --
Así es más fácil y funciona:
Ojo, son 56 bytes, no 55
-- Actualizado 22 Abr 2014, 05:51 --
Así es más fácil y funciona:
Código: Seleccionar todo
reg [7:0] mem[0:55];
initial begin
$readmemh ("bootloader_hex.txt", mem, 0);
end
Ojo, son 56 bytes, no 55
- Adjuntos
-
- test12.zip
- (3.59 KiB) Descargado 403 veces
- mcleod_ideafix
- 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: Novedades acerca del ZX-Uno
Ya funciona el TEST 13
Era lo de la ROM...
-- Actualizado 22 Abr 2014, 05:53 --
Y propenso a errores, ya que tienes que acordarte de calcular y cambiar el tamaño de la ROM cada vez que hagas un cambio en el bootloader.

-- Actualizado 22 Abr 2014, 05:53 --
antoniovillena escribió:Así es más fácil y funciona:
Y propenso a errores, ya que tienes que acordarte de calcular y cambiar el tamaño de la ROM cada vez que hagas un cambio en el bootloader.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Novedades acerca del ZX-Uno
Genial. A lo tonto llevamos 9 páginas de hilo en 3 días.
Yo creo que ya tenemos algo que podamos enseñar en RM.
-- Actualizado 22 Abr 2014, 05:59 --
¿Por cierto cómo va la demo de Radastan en el modo gráfico especial? Lo digo para meterlo en una ROM y ahorrarnos el tener que cargarlo vía cinta.
Yo creo que ya tenemos algo que podamos enseñar en RM.
-- Actualizado 22 Abr 2014, 05:59 --
¿Por cierto cómo va la demo de Radastan en el modo gráfico especial? Lo digo para meterlo en una ROM y ahorrarnos el tener que cargarlo vía cinta.
- mcleod_ideafix
- 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: Novedades acerca del ZX-Uno
Por cierto, el nuevo puerto para leer scancodes también funciona. El scancode de la tecla BkSpace es 102 (decimal). La secuencia para leer la última pulsación de tecla es algo como esto:
Dado que para que el master reset funcione, la secuencia de tres teclas debe terminar con la pulsación de BkSpace (si se pulsa BkSpace antes que Ctrl o Alt no se genera el master reset), lo primerísimo que la BIOS leerá de este puerto es el referido valor 102, a menos que el usuario sea tan rápido como para que en los primeros microsegundos de ejecución de la BIOS ya haya soltado las tres teclas
-- Actualizado 22 Abr 2014, 06:03 --
Ni idea. Se supone que es un juego, no una demo, pero eso es él quien tiene que pronunciarse al respecto...
Código: Seleccionar todo
ld bc,$fc3b
ld a,4
out (c),a ;registro $04 del ZX-Uno. Teclado PC
inc b
in a,(c) ;en lectura, devuelve el scancode de la última tecla pulsada o soltada
Dado que para que el master reset funcione, la secuencia de tres teclas debe terminar con la pulsación de BkSpace (si se pulsa BkSpace antes que Ctrl o Alt no se genera el master reset), lo primerísimo que la BIOS leerá de este puerto es el referido valor 102, a menos que el usuario sea tan rápido como para que en los primeros microsegundos de ejecución de la BIOS ya haya soltado las tres teclas

-- Actualizado 22 Abr 2014, 06:03 --
antoniovillena escribió:¿Por cierto cómo va la demo de Radastan en el modo gráfico especial? Lo digo para meterlo en una ROM y ahorrarnos el tener que cargarlo vía cinta.
Ni idea. Se supone que es un juego, no una demo, pero eso es él quien tiene que pronunciarse al respecto...
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- TallerSeverino
- Amstrad PC 1640
- Mensajes: 519
- Registrado: 12 Abr 2013, 09:55
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo NES/Clónica
- Primera consola: Nintendo NES/Clónica
- Ubicación: Cádiz
- Gracias dadas: 17 veces
- Gracias recibidas: 17 veces
- mcleod_ideafix
- 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: Novedades acerca del ZX-Uno
¡Ah! Una cosa más y con esto termino por esta noche. Sobre la ROM de CargandoLeches con pokeador incorporado:
- El tema del NMI sigue sin funcionar bien. Miraré en cuanto pueda si estoy o no generando un pulso limpio desde el hardware.
- CargandoLeches + DIVMMC : puedo cargar juegos desde DIVMMC usando el browser NMI, pero cuando hago un reset normal al sistema, se vuelve a cargar el juego. Para que no ocurra esto, tengo que resetear y justo después pulsar SPACE para que ESXDOS resetee sus variables internas y no intente de nuevo cargar el juego. El autor de ESXDOS ya nos comentó que la carga de juegos desde el browser hace una especie de falso reset antes de cargar el juego propiamente dicho.
- El tema del NMI sigue sin funcionar bien. Miraré en cuanto pueda si estoy o no generando un pulso limpio desde el hardware.
- CargandoLeches + DIVMMC : puedo cargar juegos desde DIVMMC usando el browser NMI, pero cuando hago un reset normal al sistema, se vuelve a cargar el juego. Para que no ocurra esto, tengo que resetear y justo después pulsar SPACE para que ESXDOS resetee sus variables internas y no intente de nuevo cargar el juego. El autor de ESXDOS ya nos comentó que la carga de juegos desde el browser hace una especie de falso reset antes de cargar el juego propiamente dicho.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- aowen
- 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: Novedades acerca del ZX-Uno
mcleod_ideafix escribió:Ah! Otra cosa. He probado [strike]Open[/strike] SE Basic IV con el soporte de DIVMMC y éste sí arranca (es por eso que te pregunto lo anterior). Lo curioso es que aunque desactivo el soporte de NMI para DIVMMC, al pulsar NMI, me salta siempre el browser NMI de ESXDOS.
The esxDOS NMI browser does work with SE Basic IV. It's only the snapshot loading that doesn't work owing to the browser calling reset code in the original ROM that isn't present in SE Basic IV. I'm going to suggest to the author that the browser be changed to just call the NEW command instead which should fix it. Until then you can load snapshots via the command line.
- Hark0
- Amiga 1200
- Mensajes: 1695
- Registrado: 11 Jul 2012, 23:44
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: (Otro)
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: Novedades acerca del ZX-Uno
TallerSeverino escribió:Lleváis 3 páginas en una noche, sois unos máquinas!!
O mejor dicho 9 páginas en los 4 días de Semana Santa...


http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados