★ APPLICATIONS ★ CREATION GRAPHIQUE ★ MAGNIFICADOR DE PANTALLAS (AMSTRAD SEMANAL) ★![]() |
Magnificador de Pantallas (Amstrad Semanal) | Applications Creation Graphique |
En un número anterior ofrecíamos un reductor de pantallas; en esta ocasión os presentamos un magnificador que trabaja en cualquiera de los modos de pantalla que posee el Amstrad. La magnificación de pantallas puede ser una herramienta muy útil para el tratamiento de gráficos, ya que permite obtener de una figura relativamente pequeña, otra que es cuatro veces mayor, o bien, si ésta se magnifica de nuevo, se obtendría una figura que sería 16 veces mayor que la primitiva, y así sucesivamente si deseamos volver a magnificar. De este modo, si en un programa realizado por nosotros, deseamos imprimir en pantalla una figura suficientemente grande, podemos archivar una figura de menor tamaño y en el momento de imprimirla, podemos magnificarla en pantalla. Podemos preguntarnos qué ventajas ofrece esta operación. Pues bien, la ventaja fundamental es el ahorro de memoria. Si, por ejemplo, deseamos imprimir un gráfico que ocupe 2.000 bytes en condiciones normales, utilizando el sistema que proponemos, se utilizan únicamente 500 bytes. Así pues el ahorro de memoria es de 1.500 bytes. Funcionamiento del magnificador Vamos a ver a continuación cuál es el funcionamiento de esta rutina en código máquina que provoca la magnificación de pantallas. Lo primero que hacemos al entrar en el programa, es hacer una copia de la pantalla en un buffer situado en memoria; seguidamente, hacemos una llamada a la rutina del firm-ware que nos dará el modo de pantalla en el que nos encontramos, para adaptar las variables del programa a dicho modo. Inmediatamente después entramos en el bucle principal del programa, que es el encargado de la lectura de teclado, y de enviar el programa a las diferentes partes de que consta según la tecla que se haya pulsado. En primer lugar chequea la pulsación de las teclas de cursor, que serán las que permitirán mover el cuadrado por la pantalla, para poder decidir cuál es la zona de pantalla que se desea magnificar. Así pues, si se pulsa la tecla de cursor arriba, se envía el programa a la rutina que repone la posición vertical de pantalla, incrementando dicha posición. Las restantes teclas de cursor actúan de la misma forma, incrementando las coordenadas correspondientes. Seguidamente se produce la lectura de la tecla «COPIA», si ésta no está pulsada, no produce ningún efecto, si dicha tecla se encuentra pulsada, hacemos una llamada a la rutina encargada de producir la magnificación de la pantalla propiamente dicha, y una vez hecha esta operación se retorna al bucle principal del programa. Otra de las teclas que se chequean, es la tecla «P», si ésta está pulsada, el programa toma la pantalla original del buffer de memoria y la coloca en la pantalla visible, perdiendo de este modo el contenido de la pantalla anterior. La imagen ampliada se puede salvar en cinta/disco Existe una tecla que nos permitirá salvar en disco o cassette la pantalla actual, esta tecla es la «S». Por último también se chequea la pulsación de la tecla «ESC», para la posibilidad de retornar al Basic. Vamos a centrarnos ahora en la rutina que produce la magnificación, intentaremos ver cuál es el efecto que se produce. Dado que cada modo de pantalla debe tratarse de diferente forma, lo primero que hacemos es ver cuál es el modo de pantalla en que se está trabajando: para ello observamos cuál es el valor de la variable «mo-de» y enviamos el control del programa a la rutina especializada en dicho modo. En detalle Para trabajar en modo 2, debemos observar cada uno de los bits que componen el byte, ya que todos ellos llevan información de pixels encendidos o apagados. Así pues, observamos cada uno de los bits mencionados anteriormente; cuando uno esté a 1 (encendido), enviaremos el programa a una rutina especializada en agrandar horizontalmente dicho bit, así pues, obtendremos un bit doble que el original (o sea se pondrán dos bits a 1). Si por el contrario dicho bit se encuentra a 0 (apagado), el programa se enviará a una rutina especializada en hacer dobles dichos ceros, de este modo se pondrán dos bits a cero. Una vez agrandados horizontalmente cada uno de los bits, se procederá a efectuar el agrandamiento de forma vertical, para lo cual se efectuará una copia de la primera línea de pantalla en la segunda, con lo que se habrá conseguido el efecto de alargamiento. Si se está trabajando en modo 1, se observarán también los ocho bits de que se compone cada byte, pero en este caso se tratarán de diferente forma, ya que los bits que dan información de encendido o apagado, únicamente son cuatro , ya que los otros cuatro se utilizan para colocar los diferentes colores que se utilizan en dicho modo. En modo 0, únicamente llevan información de pantalla dos de los ocho bits que componen el byte, ya que los otros seis llevan información del color. Así pues, también se producirán distinto tratamiento que en los anteriores modos. La opción de recuperar la pantalla inicial, únicamente consta de una rutina de impresión, a través de la cual se procede a situar en la pantalla visual, la pantalla que se tenía almacenada en memoria. La última opción de que disponemos, es la que nos permite salvar la pantalla actual en disco o cinta, esta opción consta únicamente de varias llamadas al firmware, que provocan el efecto de «SAVE». Vamos a ver a continuación cómo podemos utilizar el programa indicando cuáles son las teclas correspondientes a cada una de las opciones. Una vez que hayamos ejecutado el programa, para proceder a la magnificación de un trozo de pantalla, deberemos colocar el cursor en la parte superior izquierda del bloque de pantalla que se desea magnificar. Una vez decidida dicha posición, pulsaremos la tecla «COPIA» para obtener el agrandamiento de dicho trozo de pantalla. Si una vez efectuada dicha operación, no se obtiene el efecto deseado, podremos volver a la pantalla original, con sólo pulsar la tecla «P». En el caso de que la magnificación se haya producido, si deseamos salvar dicha pantalla en disco o cassette bastará con pulsar la tecla «S». Usando imágenes grabadas desde Basic Para poder trabajar con una pantalla que está almacenada en disco o cassette, podemos actuar del siguiente modo:
Como hemos dicho anteriormente en cualquier momento estamos en condiciones de salvar la pantalla con la que se está trabajando. Para poder salvar dicha rutina en cinta o disco, únicamente deberemos copiar el listado ensamblador que aparece al final del artículo. Para aquellos que no posean ensamblador, pueden copiar el listado del programa cargador y ejecutarlo, una vez hecho esto si no nos ha dado ningún error, podemos salvar el programa de la forma siguiente: SAVE"MAGNI",B,&A000,700Para cargar dicha rutina en memoria en el momento en que deseemos trabajar, deberemos ejecutar el siguiente programa Basic:10 MEMORY &FFFUna vez hecho esto, estaremos en condiciones de ejecutar el primero de los programas Basic que hemos propuesto. |
| ![]() |
|