Comprime y Expande
==================

Versin: 2.1
Autor:   Pedro Reina
Fecha:   M.21.7.1998


Objetivo del programa
---------------------

El juego de programas Comprime y Expande permite facilitar el traslado de
ficheros, tanto binarios como de texto, entre los sistemas operativos Linux,
MS-DOS y QDOS.

El programa Comprime toma un fichero en el que hay una lista de ficheros que
deben ser trasladados y los comprime todos juntos en un solo fichero. ste es
el fichero que se debe trasladar a cualquier otro sistema operativo que se
desee (de entre los admitidos).

El programa Expande toma un fichero comprimido que haya sido credo por Comprime
y lo descomprime, generando todos los ficheros originales.

En el proceso, los ficheros binarios se tratan sin ningn tipo de cambio,
permaneciendo exactamente igual al principio y al final; pero los ficheros de
texto se traducen para tener en cuenta la diferencia en los fines de lnea y en
el juego de caracteres de los distintos sistemas operativos.

Los nombres de los ficheros utilizan siempre el separador adecuado para el
sistema operativo en el que se encuentren.


Datos del autor
---------------

El autor agradece cualquier comentario que se le mande, especialmente informes
de errores. Se puede conectar por correo electrnico, carta o telfono.

Pedro Reina
c/ Marquesa de Argeso, 4
28019 Madrid
Espaa

Telfono: 915 65 17 59
Correo electrnico: pedro@anit.es

Tambin se puede consultar su pgina web, donde hay disponibles ms programas:
http://www.anit.es/pedro


Carcter del programa
---------------------

Comprime y Expande son de dominio pblico, se pueden modificar como se desee,
usar y copiar libremente. El autor agradece recibir una tarjeta postal de
aquellas personas que usen el programa, mejor con una vista de su poblacin.
Por supuesto, el autor no se hace responsable de los daos que pudieran
ocasionarse por el uso del programa.


Agradecimientos
---------------

Para crear este programa se han usado dos fuentes de informacin distintas:

Para el sistema de unir varios ficheros, comprimidos o no, en uno solo se han
usado las ideas del libro de Mark Nelson "The Data Compresion Book", de M&T
Books.

Para el mtodo de compresin se ha adaptado el cdigo de LZHUF.C, de Haruyasu
Yoshizaki, Haruhiko Okumura y Kenji Rikitake, que es una implementacin del
mtodo de compresin Lempel-Ziv con codificacin de Huffman. En el libro antes
citado de Mark Nelson tambin se explican estos conceptos.


Requisitos del programa
-----------------------

Se espera que los programas funcionen con cualquier versin de Linux,
MS-DOS, QDOS (o sistemas compatibles). Si hay algn fallo con algn sistema,
agradecera que se me comentara.


Arranque del programa
---------------------

Para arrancar el programa bajo Linux y MS-DOS se teclea

Comprime Nombre

o bien

Expande Nombre

Para arrancar el programa bajo QDOS, el ordenador debe estar en modo de alta
resolucin (MODE 4); hay que teclear

EXEC_W Comprime_exe ; "Nombre"

o bien

EXEC_W Expande_exe ; "Nombre"

Se puede usar cualquier orden equivalente a EXEC_W, como por ejemplo EW.

En el caso del programa Comprime, Nombre es un fichero con extensin lst en el
que se especifica la relacin de ficheros que hay que comprimir. Ms adelante
se explica el formato de este fichero. Para Expande, Nombre es un fichero con
extensin cmp que ha sido creado por Comprime. En ningn caso hay que escribir
la extensin de los ficheros, ya que los programas son los que las aaden.


El fichero 'lst'
----------------

Cuando se invoca Comprime, es necesario especificar un "fichero de lista", en
el que se relaciona qu ficheros se van a comprimir y de qu tipo son (binarios
o de texto).

Los ficheros de lista son simples ficheros de texto que se pueden crear y
modificar con cualquier editor de texto. Se pueden introducir cuantos
comentarios se desee. Se considera comentario toda lnea que comience con el
carcter '*'. Las lneas en blanco se ignoran.

Los nombres de los ficheros se escriben uno por lnea. Se debe usar la notacin
conocida como "8.3", es decir: un nombre de hasta ocho caracteres seguido de
una extensin de hasta tres caracteres, separados por el carcter '.' o '_'
segn el sistema operativo. Se respeta el uso de maysculas o minsculas.

Despus del nombre del fichero se puede escribir lo que se desee, teniendo en
cuenta que si el primer carcter no blanco que se encuentre es 'B' o 'b', el
fichero se considerar binario; cualquier otra cosa har que el fichero se
considere de texto.


Un ejemplo de fichero de lista
------------------------------

Imaginemos que estamos preparando un proyecto de programacin multiplataforma
que debe ser compilado en Linux, MS-DOS y QDOS. El proyecto consta de varios
ficheros con cdigo fuente y varios ficheros de datos. Vamos a preparar un
fichero de lista llamado "Proyecto.lst" en el que anotaremos todos los ficheros
junto con unos pequeos comentarios que nos ayuden a reconocerlos. ste es el
fichero de lista:


*-----------------------------------------------------------
* FICHERO:  Proyecto.lst
* AUTOR:    Pedro Reina
* FECHA:    X.8.7.1998
* OBJETIVO: Fichero de lista del proyecto Proyecto
*-----------------------------------------------------------

Proyecto.lst     //  Fichero de lista (ste)
ProNotas.txt     //  Notas del desarrollo del proyecto
Proyecto.txt     //  Instrucciones de uso del programa
Proyecto.mak     //  Fichero para make
Proyecto.h       //  Fichero de cabecera
Proyecto.c       //  Funcin main() y auxiliares
Modulo1.c        //  Primer mdulo de funciones
Modulo2.c        //  Segundo mdulo de funciones
Proyecto.dat  B  //  Fichero de datos
Proyecto.tif  B  //  Un dibujo para la portada

// Fin de Proyecto.lst


Recompilar los programas
------------------------

Paso 1. Sitate en el directorio que t decidas usar para trabajar con este
programa y descomprime en l los fuentes.

Paso 2. Edita ComprExp.h para decidir el compilador que vas a usar y el idioma
para los mensajes que los programas emitirn. En el fichero hay informacin
sobre cmo hacerlo.

Paso 3. Compilacin

En Linux, con gcc:
  compila

En MS-DOS, con Turbo C:
  Compila.bat

En QDOS, con C68:
  LOAD ComprExp_bas
    (edita el fichero para indicar el directorio de C68)
  RUN
  Compila