Introducción
Valoración de usuario: / 11
PeorMejor 
Sábado, 11 de Octubre de 2008 03:13

Uno de los parámetros por los que se han medido las prestaciones de los ordenadores personales en el pasado ha sido las capacidades gráficas de cada micro. En este aspecto, al ZX Spectrum se le echa en falta algunas de las características presentes en otros congéneres, que se traducen en juegos más vistosos, o movimientos más suaves.

English version is in progress. In the meanwhile, please use this Google automated translation version. It may be a little odd to read, but at least, you will get an idea of what's going on, if you can't read spanish.

El responsable, como bien sabéis todos, es la ULA: un chip que además define gran parte del comportamiento del Spectrum a gran escala: responsable no sólamente de la generación de la pantalla, sino además de la lectura del teclado, generación de sonido, lectura del cassette, y controlador de la memo-ria baja (los primeros 16K de RAM) donde se alberga precisamente la memoria de pantalla.

La importancia de este circuito es tal, que sin él, el Z80A pierde su señal de reloj, la señal de interrupción periódica, generadas ambas por la ULA, y pierde el acceso a los primeros 16K, ya que es la ULA quien genera las señales RAS/CAS que gobiernan el acceso a la RAM dinámica.

Esta integración de funciones ha hecho posible que el Spectrum fuera uno de los micros con mejor relación prestaciones/precio de su época (año 1982).

Esquema del acceso del Z80A a la memoria de video en el Spectrum. La línea roja indica que el Z80A tiene acceso directo a la memoria, aunque la ULA tiene prioridad sobre él.

En otras arquitecturas, los componentes que la forman no están tan acoplados como en el Spectrum. Concretamente, en la familia de ordenadores MSX, la pantalla aparece como un periférico más, gobernable a través de ciertos puertos de E/S. Si en otros micros la memoria de pantalla forma parte del espacio de memoria total visto por el procesador, en los MSX la memoria de video es de uso exclusivo del chip de video, no formando parte del espacio de memoria del procesador.

Esquema del acceso del Z80A a la memoria de video en el MSX. Las líneas roja y verde indican que existen dos buses de datos aislados. El acceso del Z80A a la memoria de video ha de hacerse obligatoriamente a través del TMS9929.

Esto es posible ya que el chip de video del MSX, el TMS9929 (TMS9918A en versión NTSC) no fue diseñado en realidad para el MSX, sino que fue diseñado por Texas Instruments como un chip de video de propósito general. Esto implicaba necesariamente el no supeditarse ni depender de una arquitectura o de una configuración concreta, si bien algunas líneas de control de este chip se pensaron para que la interface con el TMS9900, un microprocesador de 8 bits, también de Texas Instruments, fuera muy sencilla.

La versatilidad e "independencia", por llamarlo de alguna forma, del TMS9929/9918A, lo ha permitido ser usado en consolas y microordenadores fuera de la familia MSX, como la ColecoVision y el TI/99. También ha sido usado en proyectos de ordenadores "homebrew", como el sistema Elf.

Presentamos, pues, en este artículo, una interface para ZX Spectrum que integra este chip, y que opera de forma independiente de la ULA, generando su propia señal de video. Incorpora 16K de memoria RAM, y se comunica con el ordenador únicamente a través de dos puertos de E/S. Puede generar imágenes de alta resolución hasta 256x192 píxeles, a 16 colores, y sin la limitación de dos colores por cada bloque de 8x8 píxeles. Además de ello, puede mostrar hasta 32 sprites en pantalla, moviéndose en alta resolución, y sin consumo de CPU, ya que son gobernados por el propio chip.

En las secciones siguientes se describen, entre otras cosas, más detalles del chip de video usado, su implementación en MSX, cómo se ha transportado esa implementación al Spectrum, cómo se han abordado los problemas de compatibilidad entre las diferentes formas de asignación de puertos e interrupciones en el MSX y en el Spectrum, y por último, mostraremos ejemplos de juegos y demos, y las adaptaciones que han necesitado para ejecutarse en un ZX Spectrum equipado con esta interface de video.

El autor quiere agradecer a los miembros del foro de CEZ, especialmente a Gillian y WYZ por responder prontamente a las preguntas que tuve en los inicios de este proyecto sobre la programación del TMS9929, y a Decicoder, del proyecto OTLA, por proporcionarme pantallas de carga para MSX, ya adaptadas para ser cargadas desde un Spectrum.

 
ZX Projects, Powered by Joomla! and designed by SiteGround web hosting