Avances en el desarrollo del ZX-Uno

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 03 Abr 2014, 18:32

Al final he probado a sacar una onda cuadrada de 1Khz por el speaker y medir por el Scart (enchufado a la TV) con el osciloscopio. Afortunadamente tenemos menos de 950mV pico-pico, que queda dentro del margen. La señal no es exactamente cuadrada sino tipo aletas de tiburón debido al filtrado. Adjunto también el código fuente que genera dicha señal, aunque es tan simple como 6 líneas en ensamblador.
Adjuntos
beep.zip
(713 Bytes) Descargado 442 veces
IMAG001.png
IMAG001.png (3.36 KiB) Visto 18208 veces

Avatar de Usuario
TallerSeverino
Amstrad PC 1640
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

Re: Avances en el desarrollo del ZX-Uno

Mensajepor TallerSeverino » 04 Abr 2014, 11:48

antoniovillena escribió:Al final he probado a sacar una onda cuadrada de 1Khz por el speaker y medir por el Scart (enchufado a la TV) con el osciloscopio. Afortunadamente tenemos menos de 950mV pico-pico, que queda dentro del margen. La señal no es exactamente cuadrada sino tipo aletas de tiburón debido al filtrado. Adjunto también el código fuente que genera dicha señal, aunque es tan simple como 6 líneas en ensamblador.

Pues entonces deben salir menos voltios del dac de los 3 que habíamos dicho, en este caso no hace falta modificación alguna.
Como el filtro paso bajo no se altera sustancialmente con una carga tan alta pues se deja tal como está.
Un saludo.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 04 Abr 2014, 12:03

He creado el bootloader, que es una pequeña ROM que carga los 16K de ROM que se encuentren en la dirección $2C000 de la SPI Flash. Ocupa 59 bytes y además de aquí está en la carpeta firmware del repositorio:

Código: Seleccionar todo

      macro wreg  dir, dato
        rst     $30
        defb    dir, dato
      endm

        output  bootloader.rom
        define  zxuno_port      $fc3b
        define  master_conf     0
        define  master_mapper   1
        define  flash_spi       2
        define  flash_cs        3
        di
        ld      sp, $c000-11
        ld      a, 2            ; byte mas significativo de direccion
        wreg    master_mapper, 8  ; paginamos la ROM en $c000
        wreg    flash_cs, 0     ; activamos spi, enviando un 0
        wreg    flash_spi, 3    ; envio flash_spi un 3, orden de lectura
        out     (c), a          ; envia direccion 02c000, a=02,h=c0,l=00
        ld      de, $c761       ; tras el out (c), h de bffc se ejecuta
        push    de              ; un rst 0 para iniciar la nueva ROM
        ld      d, (hl)         ; en $bffc para evitar que el cambio de ROM
        push    de              ; colisione con la siguiente instruccion
        add     hl, sp
        out     (c), h
        out     (c), l
        dec     hl              ; Primera lectura que se descarta...
boot    ini
        inc     b
        ini
        inc     b
        cp      h               ; compruebo si la direccion es 0000 (final)
        jr      c, boot         ; repito si no lo es
        wreg    flash_cs, 1     ; desactivando spi
        dec     b
        out     (c), h          ; a master_conf quiero enviar un 0 para pasar
        inc     b               ; a modo normal, pero el ultimo out lo ubico
        jp      $bffd-11

rst30   ld      bc, zxuno_port + $100
        pop     hl
        outi
        ld      b, (zxuno_port >> 8)+2
        outi
        jp      (hl)
Adjuntos
bootloader.zip
(224 Bytes) Descargado 419 veces

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: 53 veces
Contactar:

Re: Avances en el desarrollo del ZX-Uno

Mensajepor mcleod_ideafix » 04 Abr 2014, 12:18

Ok! Yo tengo ahora mismo el desarrollo de cores y demás pelín parado porque ya he vuelto al trabajo, después del alta médica, y tengo que ponerme al día con unas cuantas cosas. Además tengo una mudanza interna y no podré acceder a mis cacharros durante unos días (espero que sólo sean días) :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 04 Abr 2014, 12:34

Pues yo todo lo contrario, lo he tenido durante un tiempo parado y ahora es cuando le quiero meter caña. Si puede ser, para cuando lo retomes me gustaría que subieras algunos archivos en tu último core, para facilitar la actualización de la SPI. Lo primero, dentro de la carpeta no se sabe de dónde procede roms_for_flash_at_30000.bin, así que lo he averiguado con el editor hexadecimal y tras incorporar la ROM de 48K en la dirección 2C000 tendríamos este archivo bat (incluir dentro de la carpeta roms_para_la_flash):

Código: Seleccionar todo

copy /b 48.rom+       ^
        mmces3eE.rom+ ^
        se-0.rom+     ^
        se-1.rom+     ^
        ESXMMC.BIN    ^
    roms_2c000.bin


Luego por otro lado no hay indicaciones claras de cómo obtener prom.mcs. Supongo que lo has hecho al igual que yo con srec_cat, y a no ser que uses un método más sencillo que el mío te sugiero que incluyas un .bat en la carpeta test12 como este:

Código: Seleccionar todo

call promgen -w -spi -p mcs -o tld_zxuno.mcs -s 4096 -u 0 tld_zxuno.bit
srec_cat  tld_zxuno.mcs                                         ^
          -Intel roms_para_la_flash\roms_2c000.bin              ^
          -binary                                               ^
          -offset 0x2c000                                       ^
          -o prom.mcs                                           ^
          -Intel                                                ^
          -line-length=44                                       ^
          -line-termination=nl


promgen es un ejecutable que se encuentra en la instalación del ISE Webpack, para no liarse con el PATH recomiendo crear
un archivo llamado promgen.bat en la misma carpeta con este contenido:

Código: Seleccionar todo

<unidad>:\<ruta>\Xilinx\12.1\ISE_DS\ISE\bin\nt64\promgen.exe %*


Cambiando <unidad> y <ruta> por los valores que se ajusten a tu instalación particular.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 09 Abr 2014, 01:59

Más avances, ya he lanzado la primera beta de la BIOS, adjunto aquí el .mcs ya generado.

-- Actualizado 09 Abr 2014, 01:01 --

Ojo, todavía faltan muchas cosas. El DivMMC no sé cómo inicializarlo (me tengo que leer la documentación) por lo que la ROM del +3e en realidad funciona como +2e.
Última edición por antoniovillena el 12 Abr 2014, 02:53, editado 1 vez en total.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 12 Abr 2014, 02:52

Ahí va otra actualización. Ya tengo implementada (a falta de probar) la introducción de ROMs por cinta, por lo que esta será la última vez que distribuyo el .mcs. Para actualizar el firmware a partir de ahora tendréis que ejecutar loadf.bat que genera loadf.tap y loadf.wav (todos en la carpeta firmware del repositorio). Recomiendo cargar el WAV con la ROM de CargandoLeches (está incluída en este .mcs).

Os animo a probarla a los que tengáis el prototipo: julio, jepalza, mcleod y superfo.
Adjuntos
prom2.zip
(398.61 KiB) Descargado 439 veces

JULIO
Commodore 128
Commodore 128
Mensajes: 121
Registrado: 22 Feb 2013, 18:58
Sistema Favorito: Spectrum +2
primer_sistema: Spectrum 16Kb/48Kb
Primera consola: TV Games/Pong Clone

Re: Avances en el desarrollo del ZX-Uno

Mensajepor JULIO » 12 Abr 2014, 04:08

Pues si es la ultima vez que generas un mcs mal lo voy a llevar, porque controlo lo de soldar un poco, lo de pelearme con el impact y el programador usb para meter los mcs....
¿como uso el loadf.bat? >|

jepalza

Re: Avances en el desarrollo del ZX-Uno

Mensajepor jepalza » 12 Abr 2014, 08:58

antoniovillena escribió:Os animo a probarla a los que tengáis el prototipo: julio, jepalza, mcleod y superfo.


Lo acabo de probar. Le veo dos problemas: está muy poco tiempo en pantalla la presentación, y no te da tiempo de ver las dos teclas que se pueden pulsar , he tenido que apagar y encender 4 o 5 veces para poder leer los textos y adivinar que la tecla BREAK me lleva al menú. El otro problema, es que mi teclado PS2 (al menos el que uso como pruebas) es un mini PS2, un teclado reducidom como si fuera uno de un portátil, pero externo, y la tecla BREAK no parece funcionar como en un teclado PS2 estándar, por lo tanto, no he podido probar el menú, ya que no accedo a él.
A ver si encuentro un PS2 completo en casa, sin tener que ir a la lonja.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Avances en el desarrollo del ZX-Uno

Mensajepor antoniovillena » 12 Abr 2014, 09:27

JULIO escribió:Pues si es la ultima vez que generas un mcs mal lo voy a llevar, porque controlo lo de soldar un poco, lo de pelearme con el impact y el programador usb para meter los mcs....
¿como uso el loadf.bat? >|


Es que la BIOS tiene su propio sistema de carga de ROMs, pero vamos que si luego necesitas un .mcs te lo envío individualmente.

El loadf.bat lo que te actualiza es la BIOS (te sube el archivo firmware.rom a la SPI Flash). Para usar el loadf.bat previamente tienes que haber cargado este archivo .mcs. Y también necesitabas 2 ejecutables externos que no estaban en el repositorio pero que los acabo de subir (GenTape y SjAsmPlus). Haz un update y comprueba que ejecutando loadf.bat se generan en la misma carpeta loadf.tap y loadf.wav. El loadf.tap lo puedes cargar en cualquier ROM, es carga estándar. El loadf.wav es para la ROM de CargandoLeches, en dicha ROM no hace falta escribir LOAD"", y si quieres escribir algo previamente tienes que pulsar espacio. También puedes usar el formato TZX en lugar del WAV (para la versión CargandoLeches) por si te es más sencillo.

-- Actualizado 12 Abr 2014, 08:38 --

jepalza escribió:Lo acabo de probar. Le veo dos problemas: está muy poco tiempo en pantalla la presentación, y no te da tiempo de ver las dos teclas que se pueden pulsar , he tenido que apagar y encender 4 o 5 veces para poder leer los textos y adivinar que la tecla BREAK me lleva al menú. El otro problema, es que mi teclado PS2 (al menos el que uso como pruebas) es un mini PS2, un teclado reducidom como si fuera uno de un portátil, pero externo, y la tecla BREAK no parece funcionar como en un teclado PS2 estándar, por lo tanto, no he podido probar el menú, ya que no accedo a él.
A ver si encuentro un PS2 completo en casa, sin tener que ir a la lonja.


Es la tecla Break del Spectrum, que se corresponde con la tecla Esc del PC. Lo sé, aparentemente es confuso pero tiene su lógica, la BIOS está pensada para un spectrum y en spectrum no existe la tecla Esc. De forma alternativa puedes pulsar Shift+Espacio (Ctrl Iz+Espacio). Esa tecla es para que te aparezca la lista de arranque, te puedes meter en ella y seleccionar la última opción para meterte en la BIOS, pero es más lento.

Para meterte directamente en la BIOS hay que usar la tecla Edit del Spectrum. En el PC con el mapeado McLeod se corresponde con F2, también puedes pulsar Shift+1 (Ctrl Iz+1).

En resumen, tienes que usar las mismas teclas que usarías en la BIOS de un PC (Escape y F2). Desde mi punto de vista hay suficiente tiempo para pulsar las teclas, aunque si queréis más lo puedo cambiar. Tened en cuenta que esto repercute negativamente en el tiempo de arranque total.

También recordad que para meterse de nuevo en la BIOS es necesario un master reset (Ctrl+Alt+Backspace), así que la combinación de teclas a recordar es:
  • Ctrl+Alt+Backspace seguido de Esc.
  • Ctrl+Alt+Backspace seguido de F2.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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