APPLICATIONSDIVERS ★ MAS VELOCIDAD Y MENOS MEMORIA ★

Compresor (Amstrad Semanal)Applications Divers
★ 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 ★ 

Programar ya no es lo que era, eso lo sabemos toaos. En el principio fueron lenguajes de bajo nivel, después, como todo lo vivo, fueron evolucionando hasta alcanzar la verbosidad anglosajona del Basic, rey sin corona de la informática personal.

No obstante, no sólo de un lenguaje vive un programa, en la compleja labor de crear un programa, hay muchas partes que pueden ser resueltas por el ordenador sin apenas intervención humana, tareas repetitivas o carentes de creatividad que una máquina puede realizar perfectamenfe.

Entra aquí el concepto clave de «Herramienta del programador», en el sentido de un programa que completa al lenguaje que estemos utilizando para dar luz un programa.

Algunos nombres famosos de herramientas: editores, optimizadores, generadores de programa, depuradores... Los hay por docenas, y todos, tarde o temprano, son necesarios. AMSTRAD Semanal es consciente de todo esto, y de qye el programador se encuentra bastante desasistido en este asunto; por ello, hemos decidido abrir una nueva sección que remedie el problema en la medida de lo posible.

Cliquez sur l'image pour l'agrandir

Utilidades del programador se estrena con un gran programa: un compresor.

Esta utilidad está pensada para eliminar de cualquier programa todo aquello que al ordenador no le sirve para nada a la hora de ejecutar el programa, como por ejemplo espacios en blanco innecesarios y sentencias REM, La del compresor se traduce en que los programas pasados por su filtro ocupan bastante menos memoria y se ejecutan más rápidamente.

Esto permite tener dos versiones del programa: una de ellas, para nosotros, llena de todo lo que sea importante para hacerlo legible y fácil de modificar, y, la otra, especialmente dedicada al Amstrad, que «pasa» de tales banalidades.

Compresor es un programa que disminuye la ocupación de memoria de un programa BASIC, eliminando los caracteres que ocupan memoria y son imnecesarios para el correcto funcionamiento del programa. Su utilidad es:

  • Ahorra espacio en disco y disminuye el tiempo de carga en cinta.
  • Aumenta la velocidad de ejecución (sólo un poco, no espere milagros).
  • Permite mayor libertad de escritura. En efecto, cuando se necesita un programa muy largo que utilice tablas de dimensión elevada podemos obtener un MEMORY FULL si hemos llenado el programa de espacios y comentarios. Con compresor
    podrá escribir libremente y depurar con mayor facilidad, ya que en el momento en que se le agote la memoria bastará una pasada por él y tendrá la memeoria que necesita.

Puede pensarse que el suprimir líneas REM puede hacerse con facilidad a mano, pero un programa largo presenta mucho trabajo y además si existen «Gotos». «gosubs»..., dirigidos a las líneas REM (lo cual es muy frecuente deberá buscar esas líneas, editarlas...

Compresor realiza esta función automáticamente y además:

  • Elimina todos los espacios no significativos de las líneas de programa.
  • Suprime las posibles REM a media línea (también reconoce el apóstrofo).
  • Quita las variables de control tras NEXT. Si la next es múltiple la sustituye por tantas NEXT, como sean necesarias.

Tal vez le parezca que NEXT i, j, k ocupa menos que NEXT:NEXT: NEXT; pero el modo que tiene BASIC de codificación interna hace que no sea así. Además el NEXT sin variable se ejecuta con más rapidez porque no necesita comprobar si el nombre coincide con el bucle actual.

Además de esto realiza una unión de líneas, es decir: cuando dos líneas seguidas pueden unirse sin modificar la estructura del programa (lo primero no contiene un IF y la segunda no es objeto de un GOTO u otra referencia a su número de lineo) suprime el número de línea y lo sustituye por (:). Este proceso se reitera mientras la longitud de las dos líneas unidas no sea demasiado larga para que el BASIC la admita.

Casos no previstos:

  • Si su programa utiliza una rutina de gestión de errores con referencia mediante ERL a números de línea determinados, puede ser que tras la compresión dicho número de linas no exista y la gestión de error no dé el resultado previsto.
  • Si el programa utiliza CHAIN MERGE..., DELETE..., puede ocurrir que la versión comprimida le deje alguna línea de más o de menos.
  • En fin, si su programa utiliza referencia a números de línea no prevista por el programa, los resultados son imprevisibles.
  • Para solucionarlo se ha incluido una opción «comprimir paso a paso», que tras comprimir una línea, antes de intentar unirla a la anterior espera la pulsación de una tecla. Si quiere impedir que el programa trate de llevar a cabo la unión «TAB», en caso contrario basta con pulsar cualquier otra tecla. Lo único que tiene que hacer es revisar el programa antes de comprimir y tomar nota de cuáles son las líneas que interesa dejar aisladas. Después lance el com-
    presor, use esta opción y pulse teclas cada vez que un cursor parpadeante aparezca al final de la última línea del «Programa comprimido» en la ventana inferior. Pulse «tab» cada vez que lo necesite, y listo.

Modo de utilización

Cargue el programa compresor. Aparecerá en pantalla un recuadro con unas breves instrucciones de utilización. Pulse una tecla al terminar las instrucciones, aparecerá el mensaje «Espere un momento».

Tras unos segundos que emplea en inidalizar variables, el programa pide el nombre del programa que se va a comprimir.

En este momento debe introducir en su Amstrad la cinta o disco que contiene el programa que desea comprimir grabado en formato ASCII.

La cuestión del formato requiere algún comentario: los manuales de usuario de los Amstrad indican simplemente que la orden save admite el parámetro (,A) después del nombre del programa para grabar el formato ASCII. Las diferencias del SAVE normal con éste son:

  • Grabado en disco, no se incluye BAS como tipo del fichero.
  • El fichero se graba sin cabecera: CP/M y la mayoría de los procesadores de textos podrán acceder a él (EAMSWORD no; AMSWORD y TASWORD sí) por lo que podrá utilizar las facilidades de éstos para, por ejemplo, cambiar de nombre una variable todas las veces que aparezca.
  • El programa se graba tal y como aparece listado, es decir, no se emplea la codificación interna de las palabras clave (TOKENS) sino que éstas son delanteras, siendo sencillo leer el programa mediante OPE-NINN Y LINE IMPUT 9, como hace este programa.
  • Basic puede leer el programa en este formato, tanto «LOAD» como con «RUN». En realidad lo que hace al encontrar un fichero ASCII con estas órdenes lee líneas del fichero, las codifica y las introduce en memoria como si se hubiese tecleado directamente; excepto si no llevan un número al principio en cuyo caso aparecería el error DIRECT COMMAND FOUND. La salida del compresor está en formato ASCII, según lo que acabamos de explicar puede ser ¡eí-da desde BASIC.
  • No todo son ventajas; el defecto de grabar los programas como texto es que tanto la grabación como la lectura se hace algo más lentamente que en modo normal (por algo es el modo normal) y la ocupación de memoria en disco o cinta es un poco mayor.

La razón de que el compresor utilice este formato es la siguiente: el programa puede ser leído con las instrucciones normales de manejo de ficheros en disco o cinta, y la complejidad del programa es menor al no necesitar decodificar los TOKENS. Así el progrma compresor resulta legible, es fácil de depurar, y resulta fácil que cada usuario pueda modificarlo a su gusto si lo desea. Además, si tiene un AMSWORD II podrá usarlo para cambiar los nombres de las variables por otros más cortos o alguna manipulación similar, ya que la salida de COMPRESOR está enfocada hacia el uso de estas facilidades.

Algunas veces puede parecerle que el progrma comprimido podría ser más pequeño. En realidad no es tan grande como la memoria que ocupa en cinta o disco. Lo que ocurre es que el número de línea se escribe con STR$, que incluye un espacio delante de él. No me he preocupado de suprimirlo ya que AMSWORD II trabaja mejor con texto de programa gracias a este espacio. Además no se pretende que la salida de Compresor sea la versión de trabajo del programa. Lo más adecuado es una vez obtenida la versión comprimida, cargarla desde BASIC con LOAD y grabarla con SAVE para tener la versión en formato Basic. Por supuesto que las modificaciones mediante procesador de textos deben hacerse antes de esto.

Comprimir un programa

Sigamos con el modo de usar el programa en sí. Una vez colocada la cinta o disco teclee el nombre del prgrama. En su monitor habrán aparecido tres recuadros, correspondientes a otras tantas ventanas. Por la segunda irá apareciendo el listado de su programa: así puede verificar qué Compresor está funcionando correctamente. En la primera, destinada a informes, aparece «zle-yendo línea...» y los mensajes de manejo del cassette.

Una vez terminado el programa, se le pedirá el nombre con el que quiere grabar la versión comprimída. Una vez tecleado éste le preguntará «Comprimir paso a paso (S/N). Pulse una de dichas teclas.

— Si usa cinta:

En este momento deberá rebobi-nar la cinta de la fuente e introducirla cada vez que el sistema le sugiere (press play). También debe preparar otra cinta para grabar la nueva versión e introducirla cuando el mensaje sea (press rec and play). Cuidado con los errores: es frecuente que la alternancia entre lectura y escritura no sea regular.

— Si usa disco:

En caso de usar una sola unidad, deberá asegurarse de que el disco que contiene su fichero fuente tiene espacio libre suficiente para la versión comprimida (normalmente con que haya tanto espacio libre como K's ocupe su programa, sobrará). Si tiene dos unidades disco (¡enhorabuena!) puede poner delante del nombre de la versión comprimida B: y se grabará en la unidad B,

Ahora se repetirá el proceso de la primera vuelta, con la diferencia de que ahora en la ventana inferior irá apareciendo la versión comprimida según se vaya creando. La opción «Paso a paso» está explicada anteriormente y también dentro del propio programa.

Una vez terminado el proceso se cierran los ficheros y el programa pregunta «¿Quiere ver tabla de saltos?». Respondiendo «s» obtendrá una lista de las referencias a números de línea que hayan sido cambiadas y el número por el cual han sido cambiado éstos. Puede necesitarlos para alguna modificación posterior.

Con esto concluye el compresor su trabajo. La versión comprimida ya está en cinta o disco dispuesta para ser cargada. Probablemente haya ahorrado más del 10 por 100 de memoria respecto de la fuente. De todos modos le aconsejo que guarde una copia de la fuente: si quiere más adelante ampliar y/o mejorar el programa le será más sencillo hacerlo partiendo de esa versión. La versión comprimida pásela a formato Basic y tendrá la versión de trabajo ocupando el mínimo de memoria y con la máxima rapidez de carga.

SA

★ EDITEURS: HOBBY PRESS, Amstrad Semanal
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1986
★ AUTHORS: Julian ALBO
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Compresor  v1.1    (Amstrad  Semanal)    SPANISHDATE: 2024-05-15
DL: 15
TYPE: ZIP
SiZE: 8Ko
NOTE: 40 tracks
.DSK: √

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

Lien(s):
» Applications » Compress
» Applications » Compresor/Decompresor
» Applications » Screen Compressor (Amstrad Action)
» Applications » Goldmark Systems - Screen Compressor Utility
» Applications » Compressor/Expander (CPC Magazin)
» Applications » Screen Compressor (CPC Amstrad International)
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.7-desktop/c
Page créée en 296 millisecondes et consultée 82 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.