APPLICATIONSCREATION GRAPHIQUE ★ CONSIGA MAS DE SU AMSTRAD COMPRIMIENDO LOS DATOS ★

Compressor de Pantallas (Amstrad User)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 ★ 

El problema de salvar un volcado de pantalla en el CPC-464 estriba en que requiere 16 K de memoria para salvar cualquier tipo de imagen, tanto texto como texto y gráficos mezclados. Con un cassette el problema es la cantidad de tiempo que lleva cargar de nuevo la pantalla en memoria, aun cuando la velocidad de cassette es muy razonable si la comparamos con la de otros micros. La velocidad no es problema si posee un sistema de disco, pero con 16 K cada vez, su disco no tardará en llenarse.

COMPRESOR es un programa en código máquina diseñado para reducir la cantidad de memoria necesaria para albergar toda la información requerida para reproducir la imagen original. Esto se realiza en tres pasos:

  1. Los valores actuales del MODO, OFFSET DE PANTALLA, COLOR DE BORDE y COLORES DE TINTAS se copian en cinta. A ser posible es preferible asegurarse de que el OFFSET DE PANTALLA es cero (ejecutando un comando MODE), o puede encontrarse una pequeña parte del display (una línea) diferente de cuando la salvó.
  2. Las 200 líneas horizontales se comparan para ver si algunas coinciden.
  3. Las 80 posiciones de memoria para cada una de las 200 líneas se inspeccionan para ver si existe alguna secuencia de números repetida.

Los tres programas que se muestran en los listados 1, 2 y 3 funcionan de la siguiente manera:

Listado 1: Programa Compresor

Este es el programa que realiza todo el trabajo duro de verificar y comprimir. La línea 10 fija la variable del sistema MEMORY a 5000 hexadecimal, para habilitar suficiente espacio para los datos comprimidos que se almacenan desde 9000 (Hex.) hacia abajo. Es posible que los datos no alcancen las posiciones cercanas a 5000 H pero es necesaria esta previsión por si lo hicieran. El programa en código máquina se encuentra a partir de 9030 H. Las posiciones de memoria entre 9000 H y 9030 H se utilizan para almacenar la información sobre el Modo y los colores de Borde y de las Tintas. El programa en código máquina está dividido en nueve secciones, lo cual le facilitará el trabajo de teclearlo. Cada sección tiene también un número de verificación para asegurarse de que los DATAS son correctos. Si se introduce algún DATA equivocado el programa BASIC le dirá en qué sección está el error.

La sección 1 limpia los diversos buf-fers que se van a utilizar inicializándo-los con ceros. La sección 2 comprueba las 16000 posiciones de memoria para descubrir qué números se emplean en la pantalla. Esto se consigue inicializando a cero un bloque de 256 bytes de memoria y usando el número de la pantalla como el byte menos significativo de la dirección del bloque. Al final de la comprobación, todos los números del bloque que permanezcan a cero son por lo tanto los no utilizados en la pantalla.

La sección 3 inspecciona este bloque para contar cuántos números libres hay disponibles. El motivo de todo esto es que el programa COMPRESOR necesita dos números, que utiliza como «marcadores», para señalizar las líneas que son iguales y las secuencias de números que son iguales. Obviamente si todos los 256 números de 8 bits se utilizan en la pantalla no hay posibilidad de utilizar ninguno como marcador.

Casi la única posibilidad de que esto ocurra es si usted pokea deliberadamente los 256 números en la memoria de pantalla. Incluso con los dibujos más complejos, existen normalmente algunas docenas de números utiliza-bles. Si no se puede conseguir ningún marcador, el programa retorna al BASIC, continuando si no con la sección 4.

La sección 4 produce en primer lugar un BEEP para informarle de que dispone de dos marcadores. Estos se encuentran en las posiciones de memoria 9001 H y 9002 H.

A continuación, la sección 5 recoge los valores actuales del OFFSET DE PANTALLA, MODO, COLOR DE BORDE y COLORES DE TINTAS, y los almacena entre 9004 H y 902 CH.

Las secciones 6 y 7 crean una pareja de «Bloques» que contienen los datos auxiliares para la inspección de las líneas de la pantalla.

La sección 8 compara las 200 líneas de pantalla para ver si algunas son iguales. Las líneas que sean iguales utilizarán sólo dos bytes: el número «marcador» seguido por el número de la línea similar.

La sección 9 comprobará a continuación cada línea individual de 80 bytes (a no ser que comience con el marcador “igual que”) y buscará cualquier repetición de números. Si hay más de tres números consecutivos iguales se representan como: Segundo “número marcador”. Cantidad de números iguales.

Valor del número que se repite.

Como se utilizan tres bytes, sólo merece la pena hacerlo si hay una repetición de más de tres números. Por ejemplo, una línea completa de 80 números iguales —digamos 99— se comprimiría como 12 80 99, suponiendo que 12 representa al segundo marcador.

Esta sección también almacena estos números y marcadores desde 9000 H hacia abajo. La dirección de la última posición de memoria utilizada se almacena en 9008/9 H para permitir el cálculo de la longitud del fichero comprimido. Como bien puede observar, el programa ha de realizar mucho trabajo, motivo por el cual se utiliza el código máquina.

Listado 2: Programa Descompresor

Comparado con el programa para comprimir los datos de la pantalla, el programa para descomprimir estos datos es relativamente simple. El MODO, OFFSET DE PANTALLA y COLORES DE TINTAS se fijan primero. Entonces se inspeccionan los números almacenados desde 9000 H hacia abajo. Si se encuentra un marcador se ejecuta la acción correspondiente con los números siguientes; en caso contrario el número es copiado en la memoria de la pantalla. El programa en código máquina del listado 2 se almacena a partir de 9200 H.

Listado 3

Este programa se ha diseñado para utilizarlo como una subrutina para calcular la longitud del fichero comprimido, y para salvarlo a cinta como explicaremos brevemente.

Utilización de los programas

Teclee el listado 1 y cuando el programa funcione sin errores en los datas sálvelo en cinta. Ejecute el programa BASIC que pokeará el código máquina en memoria. El programa BASIC puede ser borrado con el comando NEW, ya que no se le necesitará. Es interesante, sin embargo, conservar una copia de seguridad en cinta.

Teclee el listado 2, sálvelo, ejecútelo y bórrelo (NEW). Ahora ya está listo para ver si funciona el programa.

Ajuste el OFFSET a cero tecleando MODE 0, MODE 1 o MODE 2. A continuación escriba o dibuje algo en la pantalla, cuidando de no provocar un SCROLL de pantalla, ya que esto cambiaría el actual valor 0 del OFFSET. Para salvar el dibujo de la pantalla como fichero comprimido teclee CALL &9030: si todo va bien escuchará un BEEP y aparecerá el mensaje READY pasados de uno a diez segundos, dependiendo de la complejidad de la pantalla.

Para verificar el correcto funcionamiento del programa decodificador (listado 2) cambie primero el MODO y el BORDE y las TINTAS si lo desea, o simplemente borre la pantalla, y escriba CALL &9200.

Si todo va bien, su dibujo original aparecerá en un segundo. Si el programa no funciona correctamente verifique todos los datas en los listados para comprobar que los ha introducido correctamente. Las sumas de verificación no son infalibles; después de todo, pudo introducir dos valores intercambiados. La suma será la misma, pero los dos valores intercambiados en el programa en código máquina producirán el desastre. Cuando los dos programas funcionen, introduzca el listado 3 y salve el fichero comprimido a cinta (o disco). Si solamente está creando y salvando dibujos a cinta entonces no es necesario que el programa del listado 2 esté en memoria. Análogamente, si está cargando los ficheros en memoria para devolverlos a la pantalla, no es necesario que el programa del listado 1 esté en memoria. Ambos pueden funcionar perfectamente tanto juntos como separados, según , sea necesario.

Supongamos que usted tiene un , programa en BASIC para crear hermosos dibujos que desea salvar en forma comprimida. Esto es lo que neccesitará hacer:

En primer lugar, cargue el listado 1 y ejecútelo para cargar el programa en código máquina en memoria. Cargue su programa BASIC para crear los dibujos y a continuación mezcle (MERGE) la subrutina del listado 3 con su programa en BASIC. Inserte la siguiente línea en esta subrutina:

10005 CALL &9030

Cuando haya creado su dibujo entonces GOSUB 10000, introduzca el nombre que desee darle al dibujo y el fichero se salvará a cinta como fichero binario. Repita este proceso si necesita salvar más dibujos.

Para recuperar los dibujos cargue el programa del listado 2 y ejecútelo. Si ha salvado cinco dibujos en cinta entonces éstos pueden ser recuperados y mostrados uno tras otro utilizando un programa como este:

10 FOR PANTALLA=1 TO 5
20 LOAD “!”
30 CALL &9200
40 NEXT

PANTALLA Cada dibujo será cargado y mostrado en el monitor. Ahora bien, ¿cuánta memoria se ahorra?

Como media, el ahorro es de un 50 %, lo cual, en términos de ordenador es una economía considerable. Dibujos muy simples pueden utilizar sólo 1 K de memoria mientras que dibujos complejos pueden necesitar 12 K o más. Muchos de mis dibujos utilizan aproximadamente 8 K así que podrá albergar el doble de dibujos en su cinta o disco, y necesitará la mitad del tiempo habitual para cargarlos.

En algunos casos su programa para crear dibujos será mucho más pequeño que el fichero comprimido. Sin embargo, si la rutina de dibujo es del tipo complejo de tres dimensiones, utilizando muchas fórmulas matemáticas, el tiempo necesario para realizar el dibujo puede ser considerable (a veces horas) a pesar de que el CPC-464 no es perezoso. Este es el tipo de situaciones en que la técnica de compresión alcanza su máxima utilidad.

Angel ZARAZAGA , Amstrad User #5

★ PUBLISHER: Amstrad User
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR: Angel Zarazaga
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Compressor  de  Pantallas    (Amstrad  User)    SPANISH    LISTINGDATE: 2022-03-05
DL: 134
TYPE: PDF
SiZE: 1647Ko
NOTE: 7 pages/PDFlib v1.6

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

Lien(s):
» Applications » Screen Compress (Amstrad Computer User)
» Applications » Compresor/Decompresor
» Applications » XPANDOCP : Writer for pictures compressed using Advanced OCP Art Studio
» Applications » Compresor de Pantallas
» Applications » Compresor de Programas
» Applications » Screen Compressor (Amstrad Action)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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 333 millisecondes et consultée 465 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.