domingo, 4 de septiembre de 2016

Resolución de Pantalla en el ZX Spectrum (y III)

Video Compuesto
Una señal de video compuesto combina las 3 componentes del video; brillo, color y sincronización en una sola, de manera de que sea más fácil su transmisión.

Una señal de video compuesto en blanco y negro consiste solamente en la combinación del brillo y la sincronización, en una señal denominada luminancia y representada mediante el símbolo Y. La información del color se añade a la luminancia para formar la señal de video compuesto. Hay dos señales diferentes referidas al color, señales U y Y, denominadas conjuntamente como crominancia.

En el estándar PAL, la señal de video compuesto está basada en la luminancia en blanco y negro Y, y en la crominancia U y V, en lo que se denomina como señal YUV. El valor de Y (luminancia) se calcula en una fórmula que asigna pesos a los colores principales RGB:

Y = 0,299R + 0,587G + 0,114B

Y los valores de U y V (crominancia) se definen de la siguiente manera:

U = 0,493 (B – Y)
V = 0,877 (R – Y)

El ZX Spectrum utiliza el chip LM1889 para modular la señal de color -crominancia- (U y V) a una sub-portadora de color compatible con PAL usando el cristal de 4,43336 MHz. Después, esta señal se combina con la luminancia (Y) en los transistores TR1 y TR2 para obtener la señal de video compuesto que se envía al modulador de UHF. Es decir, el propio ZX Spectrum ya genera una señal de video compuesto.


Posteriormente, esta señal es de nuevo modulada en el circuito UM1223 para generar la señal portadora RF compatible con la señal UHF de los TV de la época.



Modo FLASH

Cuando el bit correspondiente al FLASH está activado, la ULA intercambia los colores de la fuente y el fondo a razón de 3 veces por cada 2 segundos, o lo que es lo mismo a una frecuencia de 1,56 Hz.


Modo BRIGHT

El modo BRIGHT de cada uno de los colores lo genera la ULA a través de su circuito interno de generación de la señal de luminancia (Y), mediante la variación de las intensidades de corriente, en miliamperios, de los 3 colores fundamentales RGB (Rojo – Verde – Azul). Se aplica a todos los colores excepto al negro que no tiene brillo.


Borde de la Pantalla (BORDER)

El display de la pantalla se genera a través de dos fuentes de información; la primera, es la memoria de video alojada en la RAM, y la segunda, el color del borde que se especifica a través de un registro.

El registro del color del borde no está implementado en una ubicación de la RAM, sino a través de 3 bits en el puerto I/O 254 (FEh). La utilización de 3 bits permite la generación de 8 combinaciones de colores RGB.


El puerto FEh es gestionado por la ULA y constituye un puerto de entrada y salida utilizado por varios dispositivos: teclado, altavoz y las conexiones MIC/EAR.


viernes, 2 de septiembre de 2016

Resolución de Pantalla en el ZX Spectrum (II)

Sincronismo de Línea u Horizontal

La señal PAL estándar está compuesta por un período de sincronismo de línea u horizontal (12us) y un período activo o de información de la señal (52us), sumando en total 64us. El período de sincronismo horizontal, también denominado “blanking”, consta de un pórtico anterior o “front porch” (1,5us), una señal de sincronismo horizontal HSync (4,7us) y un pórtico posterior o “back porch” (5,6us); sumando en total 12us.

En el ZX Spectrum las señales de “front porch” (2,29us) y “blanking” (13,7us) son ligeramente más largas que el estándar. Incluso, la señal de “front porch” presenta ligeras diferencias entre las diferentes versiones de la ULA. Esta diferencia con el estándar tiene el efecto de desplazar la pantalla ligeramente hacia la izquierda.

PAL Timing Estándar = Blanking (12us) + Señal Activa (52us) = Timing Horizontal (64us)
PAL Timing ZX Spectrum = Blanking (13,7us) + Señal Activa (50,3us) = Timing Horizontal (64us)




La señal de pórtico anterior o “front porch” no es utilizada por los TVs por lo que podría omitirse, pero su presencia y diferente timing en las diferentes versiones de ULA, provoca un sincronismo horizontal más tardío con el efecto de desplazamiento explicado anteriormente. La señal de pórtico posterior o “back porch” incluye dos componentes; la señal de “burst” que proporciona información para modular el color y el valor de referencia para el negro. Este valor de referencia se establece en términos de voltaje.

Igualmente, existe el período de sincronismo de campo o vertical (VSync), del cual no se dan detalles en este texto, pero el no reconocimiento del pulso VSync generado por el ZX Spectrum es la causa por la que algunos modelos de TV digitales y LCD no muestren imagen.

Atributos

Recordando de una sección anterior, la resolución del ZX Spectrum es de 256 x 196 píxeles. Si cada píxel ocupa 1 bit, la resolución del ZX Spectrum es de 256 x 192 = 49152 bits o 6144 bytes (1 byte = 8 bits). Para presentar los 8 colores del Spectrum se hubiera necesitado 3 bits por pixel, por lo que las necesidades de memoria hubieran sido 256 x 192 x 3 / 8 = 18432 bytes, es decir 18 kB de los 48 kB disponibles, y no asumible por el modelo de 16 kB.

Para resolver este problema, los ingenieros de Sinclair plantearon la matriz de colores siguiendo la matriz de 32 x 24 caracteres de texto que vamos a denominar “celdas de color”. Este problema no se había planteado anteriormente ya que su predecesor ZX81 no tiene color. Cada una de estas celdas ocupa 1 byte, por lo que la memoria de atributos ocuparía 32 x 24 = 768 bytes. Uno de los efectos más conocidos de este diseño es el “colour clash” o choque de atributos, debido a que los colores se presentan a nivel de carácter y no de pixel.

El ZX Spectrum usa una paleta de color RGB (Red – Green – Blue) de 3 bits, por lo que cada celda de color presenta los atributos de color del texto (3 bits) y el fondo (3 bits). Adicionalmente, tiene dos modos que se presentan o activos o pasivos; estos son el brillo (1 bit) y el flash (1 bit). En total se obtienen los 8 bits o 1 byte que ocupa cada celda de color, con el significado que se muestra en la siguiente figura:



Memoria de Pantalla

En resumen, el espacio necesario para almacenar la pantalla completa en el ZX Spectrum será: 6144 bytes (pixeles) + 768 bytes (atributos) = 6912 bytes
  • Direcciones del mapa de la pantalla: 16384 (4000h) a 22527 (57FFh)
  • Direcciones del mapa de atributos: 22528 (5800h) a 23295 (5AFFh) 






viernes, 19 de agosto de 2016

Resolución de Pantalla en el ZX Spectrum (I)

Introducción

Posiblemente, la descripción que hace Chris Smith sobre el sistema de video del ZX Spectrum en su libro “The ZX Spectrum ULA: How to Design a Microcomputer” (ZX Design and Media, 2010), sea la mejor y más completa que uno puede encontrar. Sin embargo, esta descripción puede llegar a ser demasiado técnica para algunos usuarios medios o principiantes, como el autor de este blog. Para ellos va dirigida esta explicación, si bien me ha apoyado en muchas descripciones del libro de Chris Smith.

También me he apoyado en el documento “La señal de Video: PAL Color” de Francisco José García Martínez, publicado por la Universidad Politécnica de Valencia.

Este texto está enfocado en el estándar PAL, pero el libro de Chris Smith cubre también el sistema NTSC.


El Sistema PAL

El sistema PAL fue desarrollado por un ingeniero de los laboratorios de Telefunken en el año 1963 en un intento de mejorar la calidad del sistema NTSC. El sistema PAL presenta una relación de aspecto de 4:3, 625 líneas y una frecuencia de 50 Hz. De esas 625 líneas, solo 575 son de imagen, quedando el resto para el sincronismo vertical, teletexto, líneas de inserción de prueba de calidad de la señal, etc.

El movimiento se consigue mediante proyecciones de instantes sucesivos, a velocidad suficiente para que el espectador tenga la impresión de movimiento continuo y no a saltos. La persistencia de la imagen en el ojo humano es diferente al barrido de la imagen por lo que se debe aplicar la técnica del entrelazado para evitar el parpadeo de imágenes. Para ello, la imagen se divide en dos campos explorando alternativamente las líneas pares y las impares. Con esto se consigue que la información que recibe el ojo es más reducida y suficiente para interpolar las imágenes sin que aparezca el parpadeo.

En el sistema PAL, cada campo tiene 312,5 líneas, o para simplificar en el texto, 312 líneas o “scanlines” por campo.


Selección de la Resolución

La imagen la forma un haz de electrones que recorre la pantalla horizontalmente, de izquierda a derecha; y cuando llega al final de la línea regresa al lado izquierdo para descender una línea, para repetir el proceso. El regreso lo hace sin generar imagen.





En el sistema PAL, el haz de electrones tarda 64 s en recorrer ese trayecto de izquierda a derecha y regresar el punto de origen de la siguiente línea o “scanline”. Una imagen PAL contiene 312 líneas, luego:

En 1 segundo:         1 / 64 s = 15625 scanlines
Actualización pantalla: 15625 / 312 = 50,08 

Es decir, en 1 segundo la pantalla se actualiza 50 veces.

La frecuencia horizontal de las scanlines en el sistema PAL es de 15,625 kHz. Asumiendo que cada píxel ocupa 1 bit, si cada línea ocupara 1000 bits, la frecuencia de trabajo para mostrar cada scaline sería de 15,625 MHz y la memoria necesaria para generar la pantalla completa ocuparía casi toda la RAM disponible en un sistema de 8 bits. Para evitar esto, los diseñadores de Sinclair redujeron el área disponible de pantalla a 256 x 192 píxeles y trabajando a una menor frecuencia (7 MHz). Este diseño lo heredó del ZX81, en donde la resolución era de caracteres de texto disponibles en ROM en una matriz de 32 x 24 celdas, debido a su poca memoria RAM (1 kB).



miércoles, 3 de agosto de 2016

¿Por qué hay tan pocos libros disponibles sobre el ZX80?

Es una pregunta que me hago, y con la respuesta lo único que puedo hacer es especular.

Del Sinclair ZX80 se vendieron unas 50.000 unidades con una distribución geográfica y una vida bastante limitadas, ya que al año su sustituto, el ZX81, estaba en el mercado.

Probablemente, ninguna de esas unidades llegaron a España de primera mano, por lo que el mercado local es muy limitado y podría decirse que el mayor número de ZX80s en nuestro país es precisamente en estos últimos años debido al auge de lo retro y el coleccionismo.

En los años 1980 y 1981 tampoco en el Reino Unido había una gran producción de libros dedicados a estos microordenadores personales; de hecho la industrial editorial especializada creció al albur del auge de estos micros, algo parecido a lo que pasó con la industria del software. Sólo un número limitado de especialistas se dedicaron a escribir sobre estos nuevos "artefactos", y sus trabajos se publicaban mayormente en pequeñas imprentas y distribuidoras. En algunos casos, escritas en la máquina de casa y fotocopiadas en las imprentas locales. Basta ver lo simple de las encuadernaciones de muchos de los títulos que salieron para el ZX80 sobre todo, y las primeras publicaciones para el ZX81 (ref. libro "Hints & Tips for Videogame Pioneers: The Birth of a New Area, A New Medium, A New Industry", Andrew Hewson, 2016).

Particularmente, sobre el ZX80 apenas hay libros disponibles y mucho menos en formato PDF. De vez en cuando sale alguno a la venta en eBay, pero sus precios suelen ser superiores a libros sobre ordenadores solo un poco más modernos que el ZX80. Hace unos meses contacté con Andrew Hewson (Hewson Consultants) a raíz de su nueva publicación referenciada en el párrafo anterior, y le pregunté si disponía de alguna copia de su "Hints & Tips" para el ZX80. La repuesta fue que solo disponía de una copia física del correspondiente para el ZX81, y es más, me pidió que si conseguía una copia del referente al ZX80 se la hiciera llegar aunque fuera escaneada. Ni que decir tiene que lo haré si alguna vez doy con el libro, algo que aún no he conseguido.

Hace poco que sigo la pista de libros sobre el ZX80 que salen a la venta en eBay, y he conseguido ganar en reñida subasta alguno. Otros he perdido porque todo tiene un límite. Mi propósito no es otro que escanearlos y ponerlos a disposición en este blog, como puede verse en la sección de descargas. Desconozco quien tiene los derechos de autor de los libros que pongo a disposición, porque por más que he rastreado en internet a las editoriales que los publicaron originariamente no doy con las empresas herederas, ni tampoco sé si siguen existiendo las originales. Si diera con ellas, por supuesto que solicitaría por escrito la correspondiente autorización. Mientras tanto, esta forma de preservación es lo único que se me ocurre hacer.