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
- 0: 000 black
- 1: 001 blue
- 2: 010 red
- 3: 011 purple
- 4: 100 green
- 5: 101 cyan
- 6: 110 yellow
- 7: 111 white
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