AIN

Os explicaba en Me gusta de la informática mi interés desde hace mucho tiempo por todo lo relativo a la compresión. Empecé con el PC usando PKARC/PKPAK, para luego pasar a LHARC y finalmente PKZIP.

Me gustaba de PKZIP su grado de compresión bueno, con una velocidad increíblemente veloz, tanto para comprimir como para descomprimir. Curiosamente PKZIP no era demasiado popular en aquel tiempo, y la gente solía preferir ARJ, bastante más lento, pero con grados de compresión algo superiores, y sobre todo, muchísimas opciones.

Así que cuando a mediados de los años 90, me topé con AIN, un compresor que pretendía ser casi igual de veloz que PKZIP, con un grado de compresión incluso superior al de ARJ, y casi tantas opciones como éste, me pareció un imposible. Un sueño.

Mencioné a AIN en evolución de los compresores, y a AINEXE en
compresores de ejecutables, pero no había tenido la oportunidad de profundizar en sus virtudes, y su historia.

Resulta cuando menos poco habitual encontrarnos con un nuevo contendiente en un mercado suficientemente maduro, como lo eran las herramientas de compresión para DOS a mediados de los años 1990.

De modo que si se quería obtener cuota de mercado, y poder llegar a triunfar, se necesitaba o algo revolucionario que nadie tuviera, o hacer lo mismo de una manera mejor, y en el caso que nos ocupa, AIN, hacía ambas.

Su documentación, era una declaración de intenciones a ese respecto, incluyendo bencharmarks contra sus contemporáneos ARJ 2.41 (1993), PKZIP 2.04g (1993) y LHA 2.13 (1991), donde en efecto se afirmaban unas capacidades cercanas a las de ARJ, con una velocidad comparable a la de PKZIP, y un grado de compresión que decían podía superar al de LHA y ARJ en hasta 1,5 o 2 veces.

Pese a que era capaz de funcionar en un sencillo 8088, una retrocompatibilidad admirable en los tiempos de DOS, por su parte, hacía uso de las nuevas tecnologías, uso de memoria XMS, y EMS, al igual que hacía PKZIP, mientras que por ejemplo ARJ, solamente usaba XMS, LHA ninguna memoria extendida. Por supuesto ofrecía encriptación, al igual que PKZIP y ARJ, aunque LHA no la ofreciera.

Permitía crear archivos autoextraibles (SFX) de forma directa, como ARJ y LHA. Algo que en PKZIP requería un programa separado. Y era capaz de crear archivos comprimidos multivolumen como ARJ, que LHA no permitía, y PKZIP necesitaba un programa separado.

Por si todo esto nos pareciera poco, era además más barato que sus competidores. Aunque LHA era dominio público, el resto se vendían como shareware, costando AIN 20$, ARJ 40$, y PKZIP 47$.

Incluía 3 herramientas en el paquete: AIN, que permitía comprimir y descomprimir, AINEXT que permitía extraer archivos, y que era de libre distribución, y AINEXE que era el compresor de ejecutables. Todos ellos estaban escritos en Borland C++. Para dar ejemplo, todos los ejecutables estaban comprimidos con el propio AINEXE, e incluso en las versiones recientes, AIN se distribuía como un SFX.

Un detalle que nos puede parecer nimio en la actualidad, es que además del progreso de compresión/descompresión de cada fichero, como era habitual, mostraba el grado de avance del proceso completo, es decir, de todos los archivos involucrados.

En mi caso, luego vendría Ultra Compressor II, que acabaría eclipsando a AIN. Sin embargo, es interesante comprobar, como a día de hoy, herramientas modernas como RAR o 7-Zip, dan cierto soporte, por supuesto a ZIP, pero también LHA/LZH y ARJ, pero ninguno a AIN, ni UC2. Como estamos centrados en AIN, vamos a seguir indagando.

El compresor AIN, se creó en 1993 por Transas Marine (UK) Ltd, y pudimos ver al menos las siguientes versiones:
– 2.0: XX/XX/1993
– 2.1: 10/01/1994
– 2.2: 01/07/1994
– 2.21 XX/XX/1994
– 2.30: XX/XX/XXXX
– 2.31: 15/06/1996
– 2.32: 18/11/1996

No hay changelog al respecto, pero si podemos decir, que probablemente 1993 fue una fase de desarrollo y beta, y la primera versión pública fue la 2.1 de 1994 (sólo en ruso), la 2.0 se menciona, pero su difusión fue en todo caso muy escasa. Por tanto fue un producto efímero con poco más de 2 años de vida.

Quizás una de las claves de su fracaso fuera la poca atención al detalle como estamos viendo con el changelog, pero que también apreciamos en la documentación, heredada de la versión 2.21 sin ni siquiera cambiar el encabezado. Probablemente 1993 fue el período de desarrollo y de fase beta, siendo casi seguro la primera versión oficial 2.2.

Una técnica poco habitual en aquella época, era que las cabeceras estaban comprimidas, lo que permitía ahorrar algunos bytes adicionales en los archivos. Además, utilizaba una aproximación a los archivos sólidos, apenas conocidos en aquella época.

Sin consultamos ORDER.TXT vemos sus datos de contacto:
TRANSAS MARINE (UK) LTD
COMMODORE HOUSE
MOUNTBATTEN BUSINESS CENTRE
16/18 MILLBROOK ROAD EAST
SOUNTHAMPTON SO15 1HY, UK
Phone : +44(0)1703 332730
Fax : +44(0)1703 233439

Pero en cambio en AIN.DOC, nos aparece:
Transas Marine (UK) Ltd.
Saint-Petersburg, Russia

Sorprendentemente AIN.DOC, en la versión 2.1, atribuye la autoría a:
Infoservice LTD / LLP Infoservice

Indicando que buscaban un distribuidor para fuera de Rusia. Realmente existe todavía una empresa llamada Transas Marine LTD, con sedes en San Petersburgo y Reino Unido entre otras ubicaciones. No parece que una empresa de ese tamaño se aventurara en la creación de software shareware, aunque el hecho que en la documentación se mencione que se probaba con voluminosos archivos de contabilidad, podría indicar que de algún modo recibió el apoyo de la empresa.

Es extraño que veamos UK y Rusia, por lo que debemos acudir a README.TXT para tener más datos:
Alexander Kulpin
Transas Marine (Russia) LTD,
21/2 Obukhovskoi Oboroni
Third Floor
St.Petersburg, 193019
RUSSIA
Street View

Transas Marine (UK) LTD,
First Base Enterprise House
Ocean Village
Southampton SO1 1XB
United Kingdom
Street View

Las direcciones no nos aclaran mucho, pero por fin tenemos detalles, su autor fue el ruso Alexander Kulpin, yo podría decir que en exclusiva, y diría que en el Reino Unido estaba la filial que lo comercializaba.

De Readme.txt
POSTAGE TO: Alexander Kulpin
Transas Marine (Russia) LTD,
21/2 Obukhovskoi Oboroni
Third Floor
St.Petersburg, 193019
RUSSIA

POSTAGE TO: Transas Marine (UK) LTD,
First Base Enterprise House
Ocean Village
Southampton SO1 1XB
United Kingdom

Viendo que toda su historia resulta opaca, voy a ir terminando con unos sencillo benchmarks actualizados:

Programa (Año) Argumentos Tamaño comprimido en bytes
ACE 2.6 (2005) ace.exe a -m5 -d4096 -r 1.724.380
AIN 2.32 (1996) ain.exe a -m1 -r 2.572.110
ARJ 2.86 (2012) arj.exe a -jm -r 2.624.994
LHA 2.55 (1992) lha.exe a -r -x 2.662.655
PKZIP 2.50 (1999) pkzip.exe -ex -r 2.543.839
RAR 2.50 (1999) rar.exe a -m5 -mm -r 2.553.202

Claramente vemos como AIN, supera a ARJ en cuanto a grado de compresión. En estas cifras, pierde en comparación con PKZIP, ya que hemos usado la última versiñon de este (1992), en vez de la habitual en aquella época PKZIP 2.04g (1993) o incluso PKZIP 1.1 (1990).

En cuanto a LHA, aunque en la época, probablemente el competidor fuera LHA 2.12 (1991), he optado por la 2.55 que fue la última versión que apareció oficialmente en inglés. Luego vendrían las japonesas LHA 2.66 (1994) y LHA 2.67 (1995).

Indudablemente ACE resulta el líder, no en vano es 10 años más moderno que AIN, incluso comparándolo con la primera versión pública, ACE 1.2 (1998) hubiera salido vencedor.

El más nuevo del lote es ARJ, un producto que sigue comercializándose, y que ha ido actualizándose durante más de 20 años, aunque sin cambios en el algoritmo, lo que explica porque ARJ 2.86 (2012), se comporta de manera casi idéntica al original ARJ 2.00 (1991).

La última versión, se puede encontrar en muchos lugares, por ejemplo en el FTP del SAC (138 Kb. en formato EXE. El homenaje no estaría completo sin su ayuda, y su correspondiente captura de pantalla:

AIN

AIN 2.32 Copyright (c) 1993-96 Transas Marine Ltd.

A new archiver. In some cases it compresses twice better than the well-
known ARJ 2.41, which it is similar to by the features it provides. It is
also faster than any other archiver.

Usage

AIN [{/|-}…] [.AIN]
[\] [@|…]

a: Add files to archive
d: Delete files from archive
e: Extract files from archive
f: Freshen files in archive
l: List of contents of archive
m: Move files to archive
t: Test integrity of archive
u: Update files to archive
v: Verbosely list contents of archive
x: eXtract files with full pathname
y: copY archive with new options

-: disables switch char
e: sElf-extracting archive
e-: convert self extractor to normal archive
f: archive Fragment size
f[K] or fM: size of K (or M) bytes
f360, f800K, f1.2M
fa: use all the free space on the disk (default)
h or ?: Help
g: Garble archive with password
g[=]
gJohn – garble with password “John”
g?[=?] – enter password from keyboard
m: Method of compression
m1: maximal compression, slow
m2: normal compression (default)
m3: fast compression
m4: no compression
o: Output directory (with a, f, m, u, y commands)
oa:\ – place the archive updated into directory a:\
p: match using full Pathnames (with e, l, v, x)
p1: match Pathname with subdirectories
r: Recurse subdirectories (with a, f, m, u)
s: (All) set archive time-Stamp
u: archive Update speed
u1: slow update, higher compression (default)
u2: normal update speed
u3: fast update, lower compression
w: assign Work directory
wd:\tmp – place temporary files into d:\tmp directory
x: eXclude files from processing
x{@|}
x*.exe: exclude *.exe files
x@list.txt: exclude files listed in file list.txt
y: reply Yes to the program request
yo: overwrite existing file
yf: proceed to next fragment
y: reply Yes to all requests
.: suppress screen messages
.em: enable Expended memory (EMS) usage
.em-: disable Expended memory (EMS) usage
.xm: enable eXtended memory (XMS) usage
.xm-: disable eXtended memory (XMS) usage

Archiver’s options constantly used are recommended to be stored into the
AIN_SW enviroment variable. For example, you may want to place the command:

SET AIN_SW=/WC:

into autoexec.bat in order to avoid “Disk full” message when updating an
archive on a floppy disk.

Examples

1. AIN A ARCHIVE1
Create the ARCHIVE1.AIN archive and store in it all files from the current
directory.

2. AIN E ARCHIVE1
Extract to the current directory all the files stored in the archive.

3. AIN E ARCHIVE1 A:\PROJECT\ *.C *.ASM
Extract to the directory A:\PROJECT all files whose extensions are
either .C or .ASM.

4. AIN F ARCHIVE1
Freshen files of the archive with newer copies (if any).

5. AIN A /R /M3 ARCHIVE2 \BC\ *.EXE *.COM
Create an archive and store *.EXE and *.COM files contained in the \BC direc-
tory and all its subdirectories.

6. AIN X ARCHIVE2
Extract all files restoring their paths. Automatically create all necessary
directories.

7. AIN F ARCHIVE2 \BC\
Freshen files of the archive with newer copies (if any), contained in the \BC
directory without subdirectories.

8. AIN /R F ARCHIVE2 \BC\
Freshen files of the archive with newer copies (if any), contained in the \BC
directory and its subdirectories.

9. AIN /R U ARCHIVE2 \BC\ *.COM *.BAT
Freshen *.COM files and add *.BAT files, contained in the \BC directory and
its subdirectories.

10. AIN D ARCHIVE2 *.EXE
Delete all *.EXE files from the archive.

11. AIN V /P A:ARCHIVE2 \BC\BIN\*.*
Display information about files of the archive’s \BC\BIN directory.

12. AIN V /P1 A:ARCHIVE2 \BC\BIN*.* > ARC.DIR
Display information about files whose full names begin with “\BC\BIN”.

13. AIN Y /M1 /U3 ARCHIVE1
Reproduce the archive using “M1” compression method and fast update option.

14. AIN Y /FA /OA: C:ARCHIVE1
Reproduce the archive existing on C: drive to A: drive archive divided into
fragments, using all free space of every diskette.

15. AIN A /F360 A:ARCHIVE3 @WILDLIST
Create archive on A: divided into 360K fragments and add files whose names and
name templates are contained in WILDLIST file.

16. AIN F /WC:\TMP A:ARCHIVE3.001
Freshen files of the second archive fragment, using C:\TMP for storing tempo-
rary data.

17. AIN M /GEAST /E ARCHIVE4 /X*.OBJ /X*.EXE
Moving all the files from the current directory, except *.OBJ and *.EXE.
Self-extracting ARCHIVE4.EXE archive is encrypted with the password “EAST”.
Files successfully stored in archive will be deleted from the directory.

18. AIN Y /GEAST=WEST ARCHIVE4.EXE
Change the password to “WEST”.

19. AIN Y /GWEST= ARCHIVE4.EXE
Cancel the encryption.

20. AIN /? > AIN.HLP
Write down this Help into the AIN.HLP file.

17 comentarios en “AIN”

  1. Wow! Nunca habia oido hablar de éste compresor. Realmente un hallazgo arqueológico! 🙂

    Por cierto, me trajiste a la memoria el ACE (WinAce)… tuvo su epoca de gloria allá por 1999 / 2000, si mal no recuerdo.

  2. Javier Gutiérrez Chamorro (Guti)

    Gracias Darío.
    En efecto, WinACE, una joya, que si no hubiera sido abandonada, le habría plantado cara a WinRAR.

  3. Excelente reportaje, la verdad nunca lo había escuchado, es bueno aprender algo nuevo jejeje. Tocando el tema de winace, la verdad poco lo usé, yo preferí siempre winzip (estaba muy en uso y prefería llevar mis archivos comprimidos de una maquina a otra pensando que las posibilidades de tener winzip eran muy altas, descargarlo desde la red a finales de los 90’s era una pesadilla).
    Luego conocí winrar, me encantó porque comprimía por lo menos al doble del zip (dependía del tipo de archivo, por supuesto), lo malo es que había que bajarlo de la red en la maquina final, y si no llevarlo en un disquette aparte para instalarlo. Ahora uso 7-Zip, comprime mucho más que winzip y winrar, pero el problema sigue siendo que no está en todos los equipos y no todos los equipos tienen internet o tienen la red restringuida, así que el formato zip se resiste a morir en este caso jejej.
    Por cierto este reportaje me trajo recuerdos de la universidad, en aquellos días instalé el antivirus AVX, sinó me equivoco ahora es Bit Defender, ¿es correcto?

  4. Javier Gutiérrez Chamorro (Guti)

    Yo uso también 7-Zip, aunque antes prefería WiNRAR. Se podía llevar en un disquete sin necesidad de instalarlo. Siempre odié WinZIP.

    Estás en lo cierto con AVX Manuel, la abreviatura de AntiVirus eXpert, y que ahora es BitDefender en sus diferentes ediciones.

  5. hola,que tal?gracias por este gran aporte,hacia tiempo que iba detras de este compresor
    Yo si que lo utilice en mis tiempos mozos,y ahora lo voy a seguir utilizando gracias a ti

  6. Javier Gutiérrez Chamorro (Guti)

    Me alegra mucho que te haya servido para reencontrarlo josemisan. Al final del artículo está la ayuda de AIN, incluyendo ejemplos.
    Algo como este es lo que necesitas para comprimir:
    AIN A /R /M1 ARCHIVE.AIN C:\BC\ *.EXE *.COM

  7. Me siento muy identificado con todo lo aquí expuesto. Gracias por una entrada tan currada.

    Efectivamente, AIN era un compresor fantástico que le mojaba la oreja al Pkzip de Pkware (que no Winzip, que eso vino después), ARJ y LHA, logrando compresiones análogas al RAR (que por entonces no era Winrar, sino el RAR del DOS). Hay que tener presente que el RAR era el compresor más potente visto en la arena DOS hasta aquel momento (siempre hasta donde yo sé, pues era el año 94 y 95). Pero lo mejor era su extraordinaria velocidad de compresión, pues era rapidísimo. Pero rápido de narices, ¿eh?

    Recuerdo que un conocido mío, que fue quien me reveló la existencia de este compresor allá por el 95, y que por entonces había montado una pequeñísima empresa de software (solo él, fíjate si era pequeña), me contó que estaban intentando convertirse en sus distribuidores en España. Nunca más supe de aquellas intenciones.

    Sin embargo, AIN tenía un fallo: cuando llegaba a 100.000 ficheros, fallaba y no era capaz de descomprimirlos después. Cuando lo descubrí me llevé un chasco y dejé de guardar cosas comprimidas con AIN. Me dolió mucho. Curiosamente a UAC me lo encontré de pasada, pero nunca le hice mucho caso, pues en la segunda mitad de los 90 ya dejé de interesarme por ese mundo.

    En fin, siempre he tenido la sensación de que AIN es un compresor olvidado por la historia.

    Un saludo y gracias.

  8. Javier Gutiérrez Chamorro (Guti)

    Gracias por tu testimonio Jose D. Alvarez, me alegra que este artículo sirva como recordatorio. No tengo en la memoria el límite de archivos de AIN, no se si era en la versión 2.2, o en la 2.21 que ya adoptó el nuevo formato. En todo caso 100.000 archivos en una época donde con DOS los discos aún eran FAT, y tenían un máximo de capacidad de 2GB era más que suficiente.

  9. Yo también usé AIN. Pero nadie ha mencionado problemas con él, aunque yo los tuve. En una ocasión un fichero que comprimí dio errores al descomprimir; lo achaqué a alguna corrupción de disco. Poco tiempo después me ocurrió de nuevo, y extrañado me decidí a hacer algunas pruebas: mi conclusión fue que el algoritmo tenía algín fallo que provocaba que algunos archivos fallasen. Tras ello dejé de usarlo; una pena porque era impresionante comparado con los demás compresores de la época.

  10. Javier Gutiérrez Chamorro (Guti)

    Yo también experimenté esos problemas Juanma. Pero eran con la 2.2 que fue la primera que usé regularmente. Luego ya pasé a las 2.32, y en esa no tuve ningún inconveniente en cuanto a fiabilidad.
    Bienvenido, y gracias por tu testimonio.

  11. Yo fui usuario de AIN. En aquella época era un obsesionado de ahorrar espacio, hasta el punto que me hice un programa que me sugería en qué disquete meter un fichero para que se aprovechara lo más posible. AIN alcanzaba ratios de compresión mucho mejores que ARJ para casi todo, por lo que se convirtió en mi compresor de cabecera. Probablemente lo sustituí en algún momento por RAR, o quizá convivieron.

    Años más tarde, es decir ,en 2019, estuve revisando todos aquellos antiguos disquetes que guardaba en una caja. No fue fácil porque muchos estaban formateados con 2M, otra extraordinaria pieza de software, pero una vez empecé a abrirlos me encontré con muchos .AIN, y sin el AIN para abrirlos. Finalmente lo encontré y pude descomprimir muchos de aquellos archivos desde DOSBOX

    Es sin duda un compresor poco usado y conocido, como prueba el hecho de que no hay descompresores modernos para el formato, pero en su día era el mejor con diferencia.

  12. Javier Gutiérrez Chamorro (Guti)

    Bienvenido Uto Dev, y creo que ambos seguimos evoluciones similares, descartando ARJ en favor de AIN. Después yo también pasé a RAR, y creo que lo abandoné también a cambio de ACE, otra pasada de compresor.

Deja un comentario