aboutsummaryrefslogtreecommitdiff
path: root/src/alf.rst
blob: 3e998b380310a9c6a594ccc1a8a740facb8f6b2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
.. RST source for alf(1) man page. Convert with:
..   rst2man.py alf.rst > alf.1

.. include:: ver.rst

.. |date| date::

===
alf
===

-------------------------------
create Atari 8-bit ALF archives
-------------------------------

:Manual section: 1
:Manual group: Urchlay's Atari 8-bit Tools
:Date: |date|
:Version: |version|

SYNOPSIS
========

alf [**--help**] | [**-a** | **-o** ] *alf-file* *file* [*file* ...]

DESCRIPTION
===========

**alf** creates *ALF* archives.

*ALF* is a compressed archive format similar to **arc**\(1), though
not compatible with it. It was used on the Atari 8-bit platform
beginning in the late 1980s. The Atari executables are **LZ.COM**
for the compressor and **DZ.COM** for the decompressor. **alf** is a
rewrite of **LZ.COM** for modern operating systems, with added features.

By default, the *alf-file* is created, and the *file*\s are compressed
and added to it. If *alf-file* already existed, it is backed up by adding
a **~** to the filename.

The **ALF** file format only supports uppercase "8.3" filenames
(Atari DOS or MS-DOS style), and does not support subdirectories. The
filenames you give will be stored in the **ALF** file uppercased
and truncated to fit the 8.3 scheme. This could result in duplicate
filenames in the archive, if you're not careful.

OPTIONS
=======

-a
  Append to *alf-file*. The files are added to the end of the archive. Be
  careful not to add a file with the same name as as existing member of
  the archive.

-o
  Overwrite *alf-file* if it exists; do not make a **~** backup.

EXIT STATUS
===========

0
  Success.

1
  Fatal error (I/O or bad command-line arguments).

NOTES
=====

This **alf** is *intended* to be 100% compatible with the original
Atari **LZ.COM** aka **ALF.COM**, with the following differences:

- There is no interactive mode. The file to create and the files to add
  must be given as command-line arguments.

- **LZ.COM** always appends to a file that already exists. This **alf**
  overwrites (making a backup) by default, and can append with the **-a**
  option.

Note that **alf** is a complete reverse-engineered rewrite in C, *not*
a port of the original 6502 code as **unalf** is. It's still being
tested, and may still contain bugs.

Performance is *horrible*, O(n^2) or worse. This shouldn't be a real
problem on modern multi-GHz CPU, especially since most Atari 8-bit
files are small (usually under 64KB). Compressing a 1.3MB text file
takes 5 seconds on the author's (rather modest) Intel i7 workstation.
A 50KB file takes 0.2 seconds, which is more typical of the files
you'd actually use this with.

The date/time stamps stored in the archive are the **mtime**\s of
the files (which is the same time **ls**\(1) shows, by default), and
your local timezone is assumed. Only a 2-digit year is displayed by
**unalf**, but the year stored in the *ALF* file doesn't have a Y2K
problem. It does, however, have a Y2108 problem...

COPYRIGHT
=========

The original AlfCrunch (**DZ.COM** and **LZ.COM**) for the Atari 8-bit
was released into the Public Domain. **alf** contains no code from
AlfCrunch.

**alf** is released under the WTPFL: Do WTF you want with this.

AUTHOR
======

The original AlfCrunch for the Atari 8-bit was written by Alfred, who
can be reached via the AtariAge.com forums with the username "Alfred".

This **alf** was written by B. Watson <urchlay@slackware.uk>.

SEE ALSO
========

**unalf**\(1), **alfls**\(1)

.. include:: manftr.rst