sábado, julio 29, 2006

Diferencias entre Timex Computer 2048 y Sinclair ZX Spectrum (Parte 1)

Categoría: Sinclair ZX Spectrum Timex Computer 2048 Emulación

Además de los cambios que se vislumbran a simple vista tales como un teclado mejorado, puerto de video compuesto, puerto de joystick Kempston y un interruptor de encendido, el TC 2048 se diferencia de un Sinclair ZX Spectrum internamente.

A continuación se listan las diferencias que el autor conoce, por lo que toda información adicional es bienvenida.

1.- Modos de video (puerto 255)

El TC2048 soportaba más modos de video que su primo el ZX Spectrum. Los modos de video pueden ser configurados a través del puerto FFh (255d).

El modo se configura mediante los tres bits menos significativos:






  • 000: Modo tradicional del Spectrum de 8x8
  • 001: Datos de video en 24576 y atributos en 30720, 8x8
  • 010: Multicolor: video en 16384 y color en 24576 8x1
  • 110: Alta resolución. Monocolor columnas pares son tomadas desde 16384 y las columnas impares desde 24576
Los bits 3,4 y 5 configuran el color de tinta para la pantalla completa en modo alta resolución:






  • 0: 000 black
  • 1: 001 blue
  • 2: 010 red
  • 3: 011 purple
  • 4: 100 green
  • 5: 101 cyan
  • 6: 110 yellow
  • 7: 111 white
El bit 6 es utilizado para deshabilitar las interrupciones (al poner en 1). El bit 7 no es utilizado.









2.- Sincronización de video mediante IN 255h

Al hacer IN al puerto 255 o a algún puerto inexistente en el Spectrum se obtiene el dato de video que están escribiendo en pantalla. Lo anterior debido a que existen unos resistores de 470[Ohms] entre la ULA y el bus de datos que no sirven como aislante cuando se direcciona un puerto inexistente.

El valor que se obtiente puede ser: un valor de píxel, un atributo (color) o nada (el borde). El borde entrega un valor de FFh.

Los programadores usaban esto para sincronización de video o para realizar una pausa de acuerdo a la tasa de refresco del video. Ejemplo:



LOOP IN A,(#FF) ; Lee el “puerto”
CP A,#FF ; ¿Está en el borde o en la venta?
JP Z,LOOP ; Salta hacia atrás si está en el borde
..... ; Continúa



En el TC2048 no existe esta conexión y el bus de datos está levantado a +5V por 8 resistores de 10[KOhms], por lo que al direccionar a un puerto inexistente siempre se lee FFh.

Dado que al leer el puerto FFh siempre se obtiene el valor FFh algunos juegos que utilizan el bucle anterior quedan bloqueados, y por lo tanto deben ser “parchados” para funcionar correctamente en el TC2048. El ejemplo por antonomasia es el juego Arkanoid. Una versión parchada de este y otros juegos se encontrarán pronto disponibles en este blog.

Saludos

JF


0 comentarios: