Problemas con el protocolo kempston en el core de Spectrum de mcleod_ideafix

Responder
Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Problemas con el protocolo kempston en el core de Spectrum de mcleod_ideafix

Mensaje por desUBIKado » 12 Sep 2021, 12:24

Hace tiempo que Fons detectó que en el ZX-Uno no funcionaba bien el joystick kempston con los juegos NONAMED y TIRO AL PICHÓN. Vimos que tampoco funcionaba bien en el core del ZX Spectrum Next, pero sí que funcionaban bien los juegos en el core de Kyp, y en cores de otras FPGA como MiST y MiSTer.

El caso es que el otro día salió un hilo en Spectrum Computing con un juego que deshabilitaba el poder jugar con teclas si detectaba que tenía un joystick kempston, y que en un ZX-Uno+, aunque se le dijese que estaba deshabilitado el puerto de joystick, seguía sin funcionar.

El hilo es este: Playing Robotics on ZX UNO+

Parece que el problema en el NONAMED es que en lugar de usar el puerto $1F (el oficinal) usa el $DF para leer el protocolo kempston. El core de mcleod_ideafix y el del Next deben estar solo leyendo del $1F lo cual es correcto. Sin embargo el responsable del core del Next va a admitir también el puerto $DF como lectura del protocolo kempston, con lo que solucionará el problema en su core.

Por otra parte, se ha visto que no es posible desactivar el puerto DB9 físico desde la BIOS, y que solo se puede hacer o bien por sentencias OUT al puerto $06 JOYCONF del ZX-Uno, o con la opción SHIFT+C del Navegador de Bob Fossil que permite poner "none" a la opción DB9 Joystick. Sin embargo, aunque esté como "none" la lectura del puerto $1F sigue devolviendo el valor 0 (kempston pero sin mover ninguna dirección) en lugar de 255 (no kempston).

Azesmbog ya ha sintetizado un core de pruebas para que devuelva el valor 255 en caso que esté deshabilitado el conector DB9 físico, y lo ha compartido en el hilo de Spectrum Computing.

Entonces simplemente propongo como mejoras:

1ª- Admitir el puerto $DF también como entrada para protocolo kempston por las mismas razones que da Alcoholics Anonymous.

2ª Incluir en la BIOS el valor "None" o "Disabled" en la opción Joy DB9 de la BIOS

3º Que si están los bits 4,5,6 a 000 en el puerto $06 JOYCONF del ZX-Uno, el valor que devuelva una lectura de los puertos $1F y $DF sea 255.

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Problemas con el protocolo kempston en el core de Spectrum de mcleod_ideafix

Mensaje por Kyp » 12 Sep 2021, 14:18

Ese problema lo tuve yo con mi core y era por querer decodificar el puerto demasiado bien :D

Los interfaces de la época suelen mirar solo el bit 5 del bus de direcciones pero en las FPGAs se suelen mirar más bits para evitar conflictos con otros interfaces. En mi core no hay otros interfaces implementados que puedan causar conflicto usando solo A5 para decodificar el kempston así que uso solo ese bit y parece que funciona bien.

Responder