CODINGLISTINGS ★ ESTRUCTURA DE LA PANTALLA (AMSTRAD SEMANAL) ★

Estructura de la pantalla (Amstrad Semanal)Coding Listings
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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 ....... 0
0 1 ....... 1
1 0 ....... 2
1 1 ....... 3

Dichos valores corresponden, precisamente, al número de tintas utilizables en dicho modo de pantalla.

Veamos ahora de qué forma están estructurados dichos bits dentro de un byte.

Cada uno de los bits de menor peso está aparejado con su correspondiente de mayor peso. De esta forma, la combinación de cada una de estas parejas de bits, nos dará el color para cada uno de los pixels que componen la pantalla.

Así, cada pareja de bits nos dará el color para un pixel, que en este caso será dos veces mayor que los correspondientes para el modo 2, con lo cual nos quedamos con una resolución gráfica muy inferior a la obtenida en el anterior modo de pantalla.

Vamos a tomar, por ejemplo, los bits 0 y 4 de un byte, y veremos cuál será la información contenida para los diferentes colores:

Bit 4Bit 0
Tinta 0 ....00
Tinta 1 ....10
Tinta 2 ....01
Tinta 3 ....11

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:

TINTA, T1, T2, A, B, X, Y

Cada uno de los anteriores parámetros tienen el siguiente significado:

T1 ... Número de tinta a cambiar (vieja)
T2 ... Número de tinta a colocar (nueva)
A .... Anchura de la zona a lavar
B .... Altura de la zona a lavar
X .... Coordenada vertical inicial
Y .... Coordenada horizontal inicial

Finalmente, diremos, que para poder salvar esta rutina en disco o cassette, únicamente tendremos que copiar el listado ensamblador que aparece al final, o bien teclear el cargador Basic, salvando el código objeto de la forma:

SAVE"LAVADO",B, &9000, &315

Para poder utilizar el nuevo comando RSX, únicamente tendremos que cargar en memoria el anterior programa, inicializando el nuevo comando con una llamada a la dirección &9000 hexadecimal.

Alberto Suñer , Amstrad Semanal

★ PUBLISHER: Amstrad Personal
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1987
★ AUTHOR: Alberto Suñer
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Lavado  de  Colores    (Amstrad  Semanal)    SPANISH    LISTINGDATE: 2024-05-21
DL: 19
TYPE: PDF
SiZE: 972Ko
NOTE: 3 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Conversor de pantallas: De modo 2 a modo 1 sin perder un pixel (Amstrad Semanal)
» Coding Src's » Cuando la pantalla tiembla (Amstrad Personal)
» Coding Src's » Volcado de la ROM superior (Amstrad Semanal)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 476 millisecondes et consultée 77 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.