Ofrecemos en esta ocasión una interesante manera de borrar la pantalla, o parte de ella, realizando sorprendentes efectos que servirán para aderezar nuestros propios programas consiguiendo unas presentaciones mucho más interesantes y vistosas. Hasta ahora nos hemos referido principalmente al tratamiento de gráficos dirigido a programas de juegos, hoy veremos algunas rutinas también en programas de gestión. Cuando deseamos borrar lo que se encuentra en pantalla, normalmente utilizamos la función CLS de Basic, dicho comando nos elimina todo lo que hubiera anteriormente en pantalla. En la presentación de textos y menús existen muchos casos en los que no deseamos borrar totalmente la pantalla, sino únicamente una zona determinada y mantener intacto todo lo demás. Esta es, pues, una de las opciones que nos ofrece el programa que hemos preparado para este artículo. Otra de las ventajas que podemos obtener es la posibilidad de producir borrados suaves de pantalla, como si de un telón se tratara, mediante una línea que recorre la pantalla borrando todo lo que en ella se encuentra. Hemos preparado varias rutinas, dos de ellas servirán para producir un CLS de pantalla, y otras dos para presentación de textos o menús. Dichos programas serán utilizables desde Basic gracias a los comandos RSX, aunque, por supuesto, se podrán incluir en programas realizados en Código Máquina introduciendo los parámetros necesarios. Vamos a ver, pues, cuáles son los nuevos comandos que nos permitirán limpiar la pantalla. El primero de ellos es: |BORRA1 ,X,Y,A,BCada uno de los anteriores comandos corresponde a lo que se indica a continuación:X ........... Coord. vertical Y ........... Coord. horizontal A ........... Altura B ........... AnchuraEstos parámetros serán los mismos para cada uno de los RSX que se verán más tarde.La coordenada vertical deberemos indicarla en caracteres, teniendo en cuenta que la esquina superior izquierda de la pantalla corresponde al valor cero. Del mismo modo, se deberá indicar la coordenada horizontal; por lo tanto, los valores límites de la misma dependerán del modo de pantalla en el que trabajemos. MODO 2 . . . . 0-79 MODO 1 . . . . 0-39 MODO 0 . . . . 0-19La anchura de la zona de pantalla a borrar deberemos darla en bytes, por lo que deberemos tener presente que en modo 2 cada byte representa un carácter, en modo 1 cada carácter está formado por dos bytes, y en modo 0 consta de cuatro bytes.Por último, la altura de la zona a borrar deberemos darla en caracteres, y en éste cada carácter es independiente del modo de pantalla en el que se trabaje. Este primer comando realiza un CLS de la zona de pantalla indicada, produciendo el efecto de una bajada de telón, gracias a una línea que baja a través de la zona de pantalla indicada, borrando todo lo que encuentra a su paso. El siguiente comando es similar al anterior, y se deberá utilizar de la siguiente forma: |BORRA2,X,Y,A,BIgual que en el caso anterior, produce un borrado de la zona de pantalla indicada, pero esta vez produciendo el efecto de subida de telón.Esto se realiza con una línea que sube por la zona de pantalla indicada, borrando todo lo que se encuentre en ella. Los restantes comandos que nos quedan por ver, realizan exactamente lo contrario que los anteriores; es decir, producen una presentación suave de textos en pantalla. Dichos textos aparecerán imprimidos en tinta 2, para conseguir este efecto utilizaremos un pequeño truco. En primer lugar, deberemos seleccionar la misma tinta para el fondo de la pantalla; es decir, para el papel, y para la pluma 1, con lo que imprimiendo en dicha pluma no se imprimirá aparentemente nada. Seguidamente, imprimiremos el texto deseado en la zona de pantalla elegida con esa misma pluma y, por último, llamaremos a la rutina encargada de transformar la tinta 1 en tinta 2, con lo que aparecerá el texto en pantalla. Este comando se deberá utilizar de la forma que se indica a continuación: |PINTA1 ,X,Y,A,BComo ya hemos indicado anteriormente, estos parámetros corresponden a los utilizados en los anteriores nuevos comandos RSX.Esta rutina se encargará de imprimir una línea en pantalla que bajará a través de la zona indicada, haciendo aparecer a su paso el texto en tinta 2, que se haya imprimido anteriormente con la pluma 1. El último de los comandos que nos queda por ver es similar al anterior: |PINTA2,X,Y,A,BEn este caso, la línea que aparezca en pantalla encargada de imprimir el texto aparecerá desde la parte inferior de la zona de pantalla indicada y subirá hasta barrer toda la zona.Estos dos últimos comandos únicamente podrán ser utilizados en el modo 1 de pantalla. Todas estas rutinas utilizan una misma llamada al firmware, se trata de la rutina encargada de esperar a que se produzca un barrido de pantalla: FRAME FLYBACK . . . . #BD19Ésta nos permitirá una perfecta visualización de la línea que se encarga de borrar la pantalla.En caso de que lo que se desee sea un borrado rápido de la zona de pantalla, podemos suprimir esta llamada al firmware, con lo que la velocidad de ejecución aumentará muchísimo. Otra de las cosas que podemos modificar es el color de la tinta con que aparece la línea encargada de borrar, esto lo podremos hacer modificando las líneas de programa que contengan la instrucción: LD (HL),255y colocando en su lugar la siguiente:LD (HL),Xdonde «X» deberá ser el valor de la tinta con que se desea imprimir dicha línea.Debemos tener en cuenta que dichos comandos no producirán ningún efecto si se introducen parámetros erróneos al efectuar la llamada, como pueden ser coordenadas que no correspondan al área de pantalla, o bien anchuras y alturas que hagan que la zona deseada se salga de pantalla. Otro de los aspectos que no hemos comentado es que las coordenadas vertical y horizontal corresponderán, en cualquier caso, a la esquina superior izquierda de la pantalla. Quizá con las explicaciones que hemos dado, hasta el momento, exista alguna duda de cómo funcionan estos nuevos comandos. Para que nos hagamos una idea mucho mejor de cómo actúan estos nuevos comandos hemos preparado un programa demostración en el cual se utilizan todas y cada una de las rutinas que se han preparado. Cómo se puede comprobar, lo primero que se hace es poner la tinta 1 del mismo color que el papel para que las rutinas de impresión funcionen correctamente. Una vez hecho esto, imprimimos el texto en pantalla con la pluma 1, con lo cual, aparentemente, no se ha modificado la pantalla. Por último, llamamos a las rutinas encargadas de convertir dicha tinta en tinta 2, con lo que el texto aparece en pantalla con un efecto de subida o bajada de telón, según la rutina utilizada. Para poder almacenar estas rutinas en cinta o disco, deberemos copiad el programa ensamblador, o bien teclear el programa cargador Basic. Una vez hecho esto ejecutaremos el mismo y, en caso de que no aparezca ningún error, procederemos a salvarlo de la siguiente manera: SAVE”CLSBIN”,B,&A000,&1C2Cuando se desee utilizar, lo cargaremos en memoria en la dirección &A000, ejecutando una llamada a esa misma dirección para inicializar los comandos RSX. Así pues, para poder ejecutar el programa demostración deberemos, en primer lugar, seguir los pasos citados anteriormente, ya que de lo contrario dicho programa no podría funcionar. AS
| ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
|
CPCrulez[Content Management System] v8.732-desktop Page créée en 215 millisecondes et consultée 7 foisL'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. |
|