★ CODING ★ LISTINGS ★ ESTRUCTURA DE LA PANTALLA (AMSTRAD SEMANAL) ★![]() |
Estructura de la pantalla (Amstrad Semanal) | Coding Listings |
Hasta ahora hemos estado hablando de la forma en que se podían mover figuras por la pantalla, a modo de sprites, pero nuestro Amstrad posee, además, una pantalla diferente a todos los restantes ordenadores que exiten en el mercado, por ello hemos creído conveniente el estudio de la misma. Existen tres modos de trabajo diferentes, cada uno de los cuales nos permite una resolución gráfica diferente. Esto no sucede por mero capricho, sino todo lo contrario, ya que cuantos más colores se utilicen, más información se necesita, por lo cual nos encontramos que a mayor resolución gráfica de menos colores disponemos y viceversa. Daremos en primer lugar un repaso a la estructura de la pantalla, y a las direcciones de memoria en la que se encuentra ubicada. Como todos sabemos la memoria de pantalla de nuestro Amstrad empieza en la dirección hexadecimal #C000, y tiene una longitud de 16.384 bytes, aunque algunos de ellos no son utilizados en ciertos momentos, y sirven para producir los scrolls de pantalla hacia arriba o hacia abajo. Cada uno de estos bytes de pantalla contiene la información de qué pixels están encendidos o apagados y el color de los mismos. Veamos, pues, cuál es la información que se almacena en cada uno de dichos bytes, en cada uno de los modos de pantalla. Empezaremos por el modo que nos permite una mayor resolución gráfica; es decir, el modo 2. Por todos es sabido que cada byte, está compuesto por ocho bits, y cada uno de estos bits únicamente nos pueden dar una información, que puede ser un uno o un cero. Nosotros, a partir de ahora, diremos que si un bit está a uno, dicho bit está encendido, y si está a cero, está apagado. Así pues, en el modo de alta resolución de pantalla, cada uno de estos bits nos dará información sobre qué pixels están encendidos o apagados. Dicho de otra forma, y dado que en dicho modo de pantalla únicamente existen dos colores, un bit encendido indicará que dicho pixel será de color uno (tinta) y un bit apagado nos informará de que dicho pixel es de color cero (papel). Vamos ahora a estudiar la forma de funcionamiento del modo 1 o modo de resolución intermedia, en el cual, como todos sabemos, se pueden utilizar hasta cuatro colores. Debido a la posibilidad de utilizar más de dos colores, en este caso un bit encendido, no indicará únicamente que un pixel está iluminado, sino que además deberá indicar el color en el que está imprimido. Es muy fácil de comprender que con un solo bit, no tenemos suficiente para almacenar dicha información, ya que únicamente puede tener dos valores, y en este caso necesitamos hasta cuatro; es decir, uno para cada color. Por lo tanto, se puede deducir que el menor número de bits capaces de almacenar hasta cuatro valores distintos es de 2. De esta forma dichos bits nos podrán dar los siguientes valores: 0 0 ....... 0Dichos valores corresponden, precisamente, al número de tintas utilizables en dicho modo de pantalla. |
Bit 4 | Bit 0 | |
Tinta 0 .... | 0 | 0 |
Tinta 1 .... | 1 | 0 |
Tinta 2 .... | 0 | 1 |
Tinta 3 .... | 1 | 1 |
El programa que hemos preparado para este artículo, está pensado, precisamente, para este último modo de pantalla estudiado, y nos permitirá hacer lo que se llama un lavado de tintas.
Se llama lavado, a la posibilidad de cambiar una tinta por otra, pero no en toda la pantalla, ya que esto se podría hacer mediante el comando Basic INK, sino en una zona determinada.
Quizá algunos se pregunten qué utilidad puede tener una rutina de este tipo, pero si nos fijamos en los ejemplos que daremos a continuación, seguro que no nos quedará ningún tipo de duda sobre su utilidad.
Supongamos que hayamos realizado una pantalla de presentación para nuestro programa, y que, una vez finalizada, nos damos cuenta de que una zona que se encuentra en un mismo color, tendría que haber sido de dos colores distintos. Entonces la única solución que nos quedaría sería pintar de nuevo todo aquello que deseemos cambiar.
Aquí es donde entra en funcionamiento nuestro programa, ya que indicando únicamente los colores a cambiar, la posición donde se debe empezar a lavar y las dimensiones de la zona, conseguiremos que un trozo de pantalla de un mismo color se divida en dos zonas con colores distintos.
Otra de las utilidades posibles se encuentra en la utilización de gráficos; así, por ejemplo, si nosotros hemos creado un gráfico con tinta 1, si lo deseamos imprimir con otra tinta, deberemos cambiar de tinta todo lo que se encuentre en pantalla y que tenga el mismo color. En cambio, si antes de imprimirlo hacemos un lavado del gráfico, nuestro gráfico se imprimirá en cualquier tinta, sin tener que cambiar absolutamente nada de lo que ya se encuentre en pantalla.
Podríamos poner más ejemplos, pero creo que con los anteriormente expuestos tenemos suficiente para darnos cuenta de la importancia y utilidad que puede llegar a tener la rutina que os presentamos en el presente artículo.
Vamos a dar, por último, el formato del comando RXS que nos permitirá producir estos lavados de pantalla:
Alberto Suñer , Amstrad Semanal
| ![]() |
|