Core Next186 PC-XT con CGA

Moderador: antoniovillena

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 24 Dic 2021, 19:26

Beta 0.2
  • Soporte de memoria EMS para el megabyte disponible en las versiones de 2MB.
  • Corrección de algunos fallos
  • Refactorización y limpieza de ficheros del proyecto
Cambios en mi repositorio de GitHub:

https://github.com/spark2k06/next186lit ... f8aa48a7cd


Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 29 Dic 2021, 17:50

Nueva actualización con algo que he querido tener desde las primeras versiones en VGA, la posibilidad de utilizar tarjetas SD de hasta 4GB, de manera que no se tenga que recurrir a SDHC ( > 4GB ) para un núcleo que realmente no lo requiere, desaprovechándose mucho espacio:

Beta 0.3
  • Corrección del fallo de la primera línea fantasma visible en modo texto.
  • Compatibilidad con tarjetas de memoria SD estandar, menores de 4GB.
Imagen


La compatibilidad con tarjetas menores de 4GB también la he trasladado a la versión VGA de ZXUnCore, binarios disponibles aquí.

Los cambios realmente son sobre la BIOS y los muestro a continuación. Se podrían trasladar al resto de ports de este core sin problema, basta con actualizarlos con estos cambios:

https://github.com/spark2k06/ZXUno4ALL/ ... 380a67c6c8

Las tarjetas de menos de 4GBs cargarán sin problema, aunque de momento es posible que este tipo de tarjetas no se reconozca correctamente su tamaño, sólo es a nivel informativo. He dejado un comentario con todos los detalles en el código de la BIOS para corregir este tema más adelante, porque hay que hacer un juego de operaciones a nivel de bits y aritméticas de 32 bits a partir del CSD de la tarjeta. No me apetecía de momento dedicar mucho tiempo a este asunto cuando solo es informativo, y con varias tarjetas funciona correctamente, como la que muestro en el ejemplo.

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 01 Ene 2022, 07:39

Lo primero feliz año nuevo!!!, a ver si este año es mejor que el 2021.

He hecho una análisis de un juego que no funciona en este core, el Tapper. En este caso, llegamos a la pantalla de menú y es posible modificar las opciones, pero al iniciarlo se queda colgado en este punto:

Imagen

Si lo depuramos, tenemos que el punto donde se cuelga es en la siguiente instrucción JNZ:

Imagen

Como puede observarse, se comprueba la variable ubicada en 0x44c3 y mientras no sea 0 se queda en bucle. Más arriba en el código, se puede ver también que se ha establecido a 1 pero aparentemente no se observa ningún cambio entre los dos puntos. Sin embargo, añadiendo una traza en ese punto, en el momento en que se queda colgado no vale 1, sino que he podido comprobar que vale 0FEh. Esto es lo que me desconcierta, ¿dónde y cómo se está modificando este valor?. Si queremos evitar que se quede colgado, es tan sencillo como parchear el juego de la siguiente manera, por ejemplo:

Imagen

Ahora ya superamos esta pantalla y podríamos jugar:

Imagen

Aunque parcialmente, ya que no funciona la música del juego y cuando la partida termina, esta vez se queda colgado en la pantalla inicial
de bienvenida:

Imagen

Lo que me lleva a pensar que este método de espera se aplica en varios puntos. De hecho, en un PCXT real o en el PCEM, antes de continuar en estos puntos transcurre un breve espacio de tiempo.

Analizamos por tanto los puntos donde se hace referencia al mismo:

Imagen

Y vemos que son varios puntos donde este valor cambia y hay un bucle. Yo diría que algún temporizador en segundo plano está cambiándolo porque hay más zonas del código donde el valor inicial y el bucle se establecen de forma seguida:

Imagen

Buscando referencias a llamadas al timer 8259 de un PCXT, nos encontramos un par de ellas, una de ellas aquí:

Imagen

y otra en un punto muy cercano y de aspecto similar. También he visto que se llama un par de veces a una rutina relacionada con DMA:

Imagen

Y si ahora nos fijamos en las carencias propias del Next186:

Imagen

Todo empieza a tener más sentido. Es muy probable que tanto la música en bucle, como los tiempos de espera entre pantalla y pantalla no funcionen debido a estos temas. Pero lo difícil en este caso no es la identificación del problema, sino cómo establecer la solución correcta que no pase por parchear el juego, ya que estoy seguro que estos pueden estar afectando a otros juegos y programas con diversos efectos asociados que hacen que no sean compatibles con el core.

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 10 Ene 2022, 07:01

Beta 0.4 ya disponible en mi repositorio de GitHub, tanto fuentes como binarios actualizados.
  • Muchas correcciones, a nivel de timer, pc speaker, cpu, etc... gracias al fork de VGA para Mist de gyurco
  • Soporte Adlib gracias al módulo de OPL2 desarrollado por jotego (jtopl2)
  • Velocidad de procesador seleccionable con CTRL + ALT + Keypad (+ o -): 4.77Mhz (Inicial), 9.54Mhz y 19,08Mhz, con base del bus y funcionamiento de la cache a 4.77MHz
  • El cambio de salida de color monocromático a color ahora se realiza con CTRL + ALT + Bloq Despl, en lugar de sólo Bloq Despl
Ahora el juego de Tapper anteriormente analizado funciona perfectamente.

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 15 Ene 2022, 15:19

Beta 0.5 ya disponible en mi repositorio de GitHub, tanto fuentes como binarios actualizados.
  • Corrección de timings de instanciado del modulo de JTOPL2
  • Corrección de timings de instanciado del modulo de teclado, ya se vuelven a detectar todos los teclados.
  • Mismo comportamiento que un 8086/80186 con PUSH SP, correcta identificación del modelo de CPU por parte de los programas.

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 30 Ene 2022, 21:00

Release 1 ya disponible en mi repositorio de GitHub, tanto fuentes como binarios actualizados.

Versión estable y cierre del primer ciclo de desarrollo. Al no ser sencilla la eliminación de la cache por importante dependencia con el funcionamiento del Next186, en el futuro se valorará la posibilidad de sustituirlo por el proyecto MCL86 de MicroCoreLabs, con idea de lograr un core de ciclo exacto con un 8088, y opción a modos de funcionamiento turbo opcionales:
  • Corrección de fallo de teclado al reiniciar con CTRL + ALT + DEL
  • 80186 a 12Mhz por defecto, en lugar de 4.77Mhz
  • Opción Throttle Down con CTRL + ALT + [-], para volver al modo normal CTRL + ALT + [+]... útil para juegos antiguos que funcionan muy rápido. Al reinicio vuelve al modo normal automáticamente.
phpBB [media]

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 10 Abr 2022, 12:09

phpBB [media]



ZXUno PCXT CGA (Release 3)

* Adaptacion del modulo CGA para aceptar accesos de 16 bits a los registros de ésta, para tener compatibilidad con Next186. Son accesos de tipo OUT DX, AX. Ahora funciona correctamente el juego PAKU PAKU. Gracias gyurco por las ideas acerca del modo especial de texto que utiliza el juego.

* Actualizacion del modulo JTOPL2

ZXUno PCXT CGA (Release 2)

Fix en la cache de instrucciones que soluciona glitches graficos en varios juegos de Dinamic, como Army Moves, Freddy Hardest y Capitan Trueno, entre otros. Gracias gyurco por el aporte.


Fuentes y binarios:

https://github.com/spark2k06/next186lit ... cs_gremlin

Para quien esté interesado en toda la parte técnica:

https://github.com/gyurco/Next186/issues/14

Avatar de Usuario
spark2k06
PLA
Mensajes: 49
Registrado: 17 Ago 2018, 18:43

Re: Core Next186 PC-XT con CGA

Mensaje por spark2k06 » 17 Abr 2022, 07:31

ZXUno PCXT CGA (Release 4)

* CTRL + ALT + BackSpace -> MasterReset

* Soporte joystick protocolo Atari, mapeado en teclado numérico

ZXUno PCXT CGA (Release 5)

* CTRL + ALT + DEL -> Ahora es un reinicio gestionado desde el propio core si se ha establecido el offset del menu de cores de ZXUno mediante OUT 99h, COREnn. De lo contrario, seguirá siendo gestionado desde la BIOS

* Actualizacion del modulo JTOPL2

Gracias @mcleod-ideafix por el modulo multiboot del ZXUno y por darme la idea de usar un puerto I/O para establecer el core asociado al reinicio

https://github.com/spark2k06/next186lit ... cs_gremlin

Mediante esta nueva entrada en el autoexec, se le indicará al core que ante un CTRL + ALT + DEL, reinicie el core ubicado en la posicion 36 del menú de cores del ZXUno. Si no se le indica, CTRL + ALT + DEL seguirá siendo gestionado desde la BIOS, y algunos juegos que tienen hookeado el teclado no responderán ante este combo:

Imagen

El fichero XTCGA36.DBG se encuentra disponible en la carpeta HDD del repositorio:

Imagen

Si el core de PCXT se encuentra en otro lugar distinto a la posición 36, simplemente actualizarlo con el valor correspondiente en hexadecimal (aquí 0x24):

Imagen

Responder

Volver a “Cores”