APPLICATIONSCREATION GRAPHIQUE ★ MAGNIFICADOR DE PANTALLAS (AMSTRAD SEMANAL) ★

Magnificador de Pantallas (Amstrad Semanal)Applications Creation Graphique
★ 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 ★ 

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:

  1. Cargaremos en memoria la rutina de magnificación de pantalla.
  2. Escribiremos un programa Basic como el que ofrecemos a continuación.

    10 MODE N
    20 LOAD"PANTALLA",&C000
    30 CALL &A000

    donde «N» será el modo de pantalla en el cual deseamos trabajar o en modo de pantalla en el cual está salvada dicha pantalla en disco o cinta.
Si en cualquier momento decidimos dejar de trabajar con la pantalla actual y deseamos cargar otra, únicamente deberemos pulsar la tecla «ESC» y volver a ejecutar el anterior programa Basic, cambiando el nombre de la pantalla a cargar.

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,700

Para cargar dicha rutina en memoria en el momento en que deseemos trabajar, deberemos ejecutar el siguiente programa Basic:

10 MEMORY &FFF
20 LOAD "MAGNI",&A000

Una vez hecho esto, estaremos en condiciones de ejecutar el primero de los programas Basic que hemos propuesto.

Si cualquiera de las pantallas que hemos almacenado de forma magnificada se desea retocar para limpiarla de las brusquedades propias de la magnificación, deberemos cargarla en el diseñador de gráficos de que dispongamos para dejarla finalmente tal como se desee.

Debemos decir también que utilizando esta rutina de magnificación, no podremos tener nada en memoria a partir de la dirección &FFF, ya que a partir de esa dirección es donde se almacenan los buffers de la pantalla actual y de la pantalla inicial.

Así pues a partir de esa dirección y con una longitud de 16.384 bytes está almacenada la pantalla incial. Existe otro buffer que es donde se almacena la pantalla magnificada.

SA

★ PUBLISHERS: HOBBY PRESS, Amstrad Semanal
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1986
★ AUTHOR(S): ???
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Magnificador  de  Pantallas    (Amstrad  Semanal)    (ASM-Source)    SPANISH    LISTINGDATE: 2024-05-16
DL: 122
TYPE: PDF
SiZE: 703Ko
NOTE: 1 page/PDFlib v1.6

» Magnificador  de  Pantallas    (Amstrad  Semanal)    SPANISHDATE: 2024-05-16
DL: 110
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 tracks
.DSK: √

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

Lien(s):
» Applications » Magnified Characters (Computing with the Amstrad)
» Applications » Magnificador
Je participe au site:
» 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.732-desktop
Page créée en 007 millisecondes et consultée 315 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.