Algunas versiones del core PC de pruebas/experimentos propios...

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por Quest » 22 Abr 2017, 14:11

Como comentaba en el hilo del addon tft (muevo aquí el tema para que no sea offtopic allí) me hice unas versiones modificadas del core de PC para mi uso personal con addons o simplemente para tener cosas a mi gusto, cacharrear, aprender, etc... No se si a alguien pueden interesarle para algo, ya que están hechas con mis manías :D, pero bueno, las pongo por aquí igualmente.

Son todas para ZX-Unos con 2Mb *internos* (que es con el que hago yo mis pruebas). Si en alguna veis cosas raras, probablemente será de algún experimento que metí en alguna. No me hago responsable :mrgreen: :D

1- Tengo una con soporte del addon DAC VGA externo de 18 bits (diseño disponible en el repositorio: http://svn.zxuno.com/svn/zxuno/hardware/placas_vga_v2/) funcionando a la vez que el interno del ZX-Uno, así que se puede sacar a la vez por dos pantallas. La calidad de la imagen por el addon DAC es perfecta, ya que representa el 100% de los colores MCGA/VGA (18 bits), y el brillo es un 25% mayor que en la interna, ya que no está por enmedio el AD724. Además volví a ponerle la fuente VGA de 8x16 para el modo 80x25 (porque a mí personalmente me gusta más), también puse la CPU ligeramente más rápida (32Mhz frente a los 25Mhz- Es lo máximo que he conseguido manteniendo la estabilidad) y realicé unos pequeños cambios en la BIOS (en rutina que deja el sistema "colgado" cuando no encuentra SD) y en el core (haciendo linea CS dependiente de MISO) para poder meter tarjetas SD en caliente, en vez de que se quede colgado en plan "No boot device found. System halted" cuando no encuentra tarjeta (cosa que me pasaba más a menudo de lo que pensaba y por eso lo hice :mrgreen:). Ahora muestro un "No boot device found. Insert SD card and press any key to retry..." y vuelve a la rutina de detección y arranque. También he cambiado el ID ROM de la BIOS para que se identifique como un AT en vez de como un XT, y alguna otra cosilla que ahora no recuerdo.

Descarga:
zxuno_next186lite_2mb_int_test_opcode0f.bit.ZX1
(336 KiB) Descargado 320 veces
2- -Hice otra con salida HDMI/DVI (también usando RGB 666 / 18 bits), soportando el addon HDMI disponible en el repo (http://svn.zxuno.com/svn/zxuno/hardware/hdmi/). Eso sí, este va algo más lento puesto que para que la FPGA no se venga abajo, al necesitar el stream HDMI y el serializador gran velocidad (5 veces el pixel clock VGA, = 125Mhz), la CPU hay que mantenerla a 25Mhz y la RAM a 50Mhz. Si subimos de ahí, la inestabilidad es muy grande, incluso impidiendo el arranque. También se ve por la salida VGA normal del ZX-Uno simultáneamente. Si no recuerdo mal lleva también todas las modificaciones del anterior (salvo en el tema de la velocidad, así que en este no hagáis caso de lo que pone al arrancar).

Descarga:
pantallazo_ida.png
Tanto en el core para el addon DAC VGA como el de HDMI, al usar toda la profunididad de color, se pueden ver claramente las diferencias:
X-wing con el DAC VGA de 18 bits o HDMI
X-wing con el DAC VGA de 18 bits o HDMI
xwing_dac18b.jpg (92.75 KiB) Visto 9755 veces
X-Wing con el dac interno de 9 bits del ZX-Uno
X-Wing con el dac interno de 9 bits del ZX-Uno
xwing_zxuno.jpg (88.09 KiB) Visto 9755 veces

3- Esta otra es un experimento-ñapa, estoy estudiando-probando otra modificación para evitar cuelgues en opcodes no soportados. De momento tenía una meta pequeña (conseguida, en plan ñapa) que era que no se colgara Checkit en la detección de la configuración, en el test de ram, etc... y ha "funcionado", añadiendo un pequeño "dummy" en el código del Next186, cuando se encuentra con un opcode de 2 bytes, en concreto del tipo $0F XX. En este hay más experimentos, así que para que compilara más rápido, en vez de volver a la fuente de 8x8, simplemente reduje a la mitad la de 8x16, así que muchos caracteres se os verán incorrectos (los alfabéticos deben ir bien).

Descarga: Con este tercero del que os hablaba, simplemente podéis comprobar como algunas cosas no se cuelgan al arrancar o al hacer ciertas cosas (probad checkit), pero poco más. Mi idea con esto es seguir estudiando esos 2 o 3 opcodes de los 80286/386 que usan algunos programas para "comprobar qué procesador hay instalado", pero que en el Next186 causan una interrupción/excepción que cuelga el core, mientas que por ejemplo en el Nec V30 que tengo puesto en mi Sinclair PC200 esto no ocurre, y Win3 por ejemplo arranca perfectamente.

Esto me empezó a picar con el tema del chkeckit y también con el Windows 3.0, que no entendía por qué no iba, y luego estudiándolo un poco lo comprendí. Aún no he conseguido que arranque con la ñapa del core, pero sí parcheando el propio Windows. (Seguiré investigando en el core)

Lo cuento por aquí como curiosidad, ya que me parece un tema interesante. Al menos me hizo ilusión poderlo arrancar y, aunque no hay memoria de vídeo suficiente, sí pude "jugar" casi entera una partida de solitario, medio a ciegas :mrgreen: :

En este caso el problema con Windows 3.0 y el Next186 (hasta que se pueda hace en el core) está en el KERNEL.EXE del Windows. Concretamente al estudiarlo una vez abierto en IDA pro. En el offset $AEF9 físico encontramos la presencia de la instrucción SGDT, que usa windows para determinar si hay un 286 o un 386, a grandes rasgos, supuestamente en un 286, lo que devolvería al leer debería ser 1 en los bits altos y el 386 0. En el Next186 esto ni siquiera está contemplado, y salta la excepción colgando el core.

IDA:
zxuno_next186lite_2mb_int_25_50_HDMI.bit.ZX1
(336 KiB) Descargado 336 veces
El problema es sólo al usar la instrucción, porque una vez que Windows "asume" que es un 286, funciona perfectamente en el core. Por tanto, sun simple parcheo en el Kernel, lo hace funcional. Convertimos SGDT y CMP en NOPs y el JZ en JMP para que siempre salte a la subrituna "de 286" y listo:
MKEYB.zip
(7.8 KiB) Descargado 339 veces

Lo siguiente, como decía, será estudiarme (puesto que tengo bastante poca idea de la estructura de los x86 y tampoco soy un gran entendido en ensamblador) cómo añadir aunque sea una implementación parcial, o al menos que sirva para engañar a los programas que usan este tipo de técnicas en el core del Next186 para que las pasen. No me refiero a la ñapa dummy que hice para lo del checkit, sino a algo que sirva de verdad para aumentar aunque sea un poquito la compatibilidad.


4- Por último tengo una que realmente no sirve para mucho, así que no es muy recomendado descargarla. Son pruebas que hice para usar teclados que no disponen del scancode set 1, si no del 2 (el más habitual). Quité la inicicialización del set 1, corregí las traducciones de scancodes en la BIOS para el uso de teclados españoles con mKeyb de Freedos y además quité la comprobación de conexión de teclado para poderlo conectar en caliente. De este modo, funcionan los teclados que usan set 2 (siempre usando mKeyb sp, que también adjunto aquí), pero solo en el DOS y en algunos programas/juegos. En la mayoría de juegos, deja de funcionar el teclado, porque supongo que no usan la int09 (que es donde la BIOS hace la traducción, la cual debería hacerse mejor en HDL en el core, simulando así un i8042 real o similar, que son los que hacen la traducción de forma transparente al usuario a set 1 en ATs en adelante, si la memoria no me falla)

Descarga:
zxuno_next186lite_2mb_int_keyb_set2.bit.ZX1
(336 KiB) Descargado 329 veces
pantallazo_hex.png

En fin, en resumen, que son cositas que hice para mí, como digo, para ir aprendiendo, etc. Como decía al principio, son todas para 2Mb internos, eso sí, que es lo que yo uso por defecto, para poder conectar addons y demás sin merma de memoria. Algunos pudieron verlas porque las llevé a RetroPixel con los susodichos addons, para el que tuviese curiosidad.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por brunosilva » 22 Abr 2017, 14:22

@QUEST - files from 1 and 3 are iqual... is this right?
also "IDA" is the same file from 2...

@all - anyone has this addons to sell? wanna try also :)

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por Quest » 22 Abr 2017, 14:26

brunosilva escribió:@QUEST - files from 1 and 3 are iqual... is this right?
also "IDA" is the same file from 2...
Nope, it's right now. You might be reading it when I was still writing the post, and it was incomplete :D
Check again ;)
@all - anyone has this addons to sell? wanna try also :)
Ask to Antoniovillena, he may have some in kit..?
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por brunosilva » 22 Abr 2017, 14:31

@QUEST - yes... I was too fast... :)

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por Quest » 22 Abr 2017, 14:51

Por cierto, hice un cambio en la BIOS del ZX-UNO que aún estoy probando, para inicializar los teclados al arranque de tal modo que cuando reseteamos el ZX-UNO después de haber usado el core de PC, vuelva a su estado original con el set de fábrica (normalmente el 2) y así no necesitemos desconectar el ZX-UNO de la corriente para poder seguir usando el teclado normalmente.

Para el que quiera probar (bajo tu propia responsabilidad, está en pruebas ;)), es este (lo he llamado 0.61b):
firmware.zx1
(16 KiB) Descargado 311 veces
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

jgilcas
Mensajes: 41
Registrado: 20 Mar 2016, 11:24

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por jgilcas » 02 Jun 2017, 22:47

Hola! He decidido pedir un DAC y quería saber si funcionaría con el core de PC teniendo un zxuno de 512k. Saludos.

Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por Quest » 06 Jun 2017, 09:41

jgilcas escribió:Hola! He decidido pedir un DAC y quería saber si funcionaría con el core de PC teniendo un zxuno de 512k. Saludos.
No te funcionará con el core que hay en este hilo, puesto que es para 2Mb internos.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por brunosilva » 06 Jun 2017, 12:04

my dac already arrived... when i have the change I will test it and comment here :)

Avatar de Usuario
Martin8bity
Mensajes: 36
Registrado: 13 Mar 2016, 09:51
Ubicación: Czech Republic
Contactar:

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por Martin8bity » 17 Jun 2017, 12:19

The 18-bit DAC core works, but is very unstable on my ZX Uno. The HDMI core does not have HDMI output. Maybe I have wrong HDMI interface, are there any test for it? Which version did you use?

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Algunas versiones del core PC de pruebas/experimentos propios...

Mensaje por antoniovillena » 17 Jun 2017, 12:24

Martin8bity escribió:The 18-bit DAC core works, but is very unstable on my ZX Uno. The HDMI core does not have HDMI output. Maybe I have wrong HDMI interface, are there any test for it? Which version did you use?
The 18 bit DAC is tested and working perfectly. I've sold some some and I've received positive feedback.

About the HDMI. There is only a pinout for HDMI interface. The problem with HDMI is that outputs a low resolution signal, and this lowres is not supported for all TVs.

Responder