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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
AlfCrunch Documentation Revised 7/10/88
-----------------------
AlfCrunch is an implementation of the Lempel-Ziv compression
algorithm. Although it produces files that have the same structure as
those produced by the Arc program, the two are not compatible. Arc
cannot uncrunch AlfCrunch files, nor can AlfUnCrunch unarc normal Arc
files.
The current version of the LZ/DZ files is 1.4. Versions 1.1 through 1.3
are compatible, but not with 1.0. If you have 1.0, you should discard it
and use 1.4. The reason for this is that 1.0 used the same header as
normal Arc crunch. Because of possible confusion over this, the header
used by AlfCrunch was changed. Since 1.0 had very limited distribution,
this situation should not often arise. For those who wish to be able to
detect the AlfCrunch format, the first two bytes of the file will always
be $1A $0F.
This version fixes an annoying bug in both v1.2 and 1.3. If you had a
subdirectory entry amongst the filenames you were crunching, LZ would
stop at the subdir entry. Also the stack errors will now cause a proper
exit to Dos rather than re-execution.
Enhancements to v1.4 are the addition of time/date support. If you
are running under Sparta 3.2, LZ will store the Sparta date/time from each
file into the header. DZ does not use this information, it's just there to
provide a reference point.
When running either LZ.COM or DZ.COM, Memlo must be under $3000. This
should not normally be a problem unless you have a lot of handlers
installed.
A cartridge may be present, as it only affects the size of the buffer
available to AlfCrunch. Maximum speed will be achieved without a
cartridge being present.
A final note
------------
Well I think this is about as far as AlfCrunch is going to get for now. I
don't really believe there are any more features to add without modifying the
command line parameters. So this version (1.4) will be the last for
some time to come. Except for bug fixes (few if any I hope) the 1.x line will
not change. I hope to add command line parameters similar to ARC and maybe
add the ARC compression methods to finally resolve the compatibility issue.
Alfred
Programmer's Aid BBS
(416) 465-4182
Running AlfCrunch
-----------------
To crunch files, load LZ.COM. The title will be displayed, along
with the version which should be 1.4. You will then be prompted for
the output filename. This may be up to 80 characters long,
including subdirectory names.
If the output file already exists, it is checked to see if it is an
AlfCrunch file. If the first header is correct, then the new files will be
appended to it. If the header is wrong the program will print an error
message and exit to Dos. If the file is shorter than the header length
(29 bytes), then it is simply opened for normal output, which erases it.
Next you will be prompted for the input filemask. This is what will
be used to select the files. This may also be up to 80 characters long,
including any subdirectory names. Wildcards are allowed. If selecting
all files, the mask must end in *.* .
Finally, you have the option of turning the screen off. Selecting
this option will speed up the program by 15-20%. Once selected, you will
not again be prompted for this option. If you do not elect to turn the
screen off, the program will continue to present this prompt until it is
selected.
The program will then select files using the mask and compress them,
displaying the filenames as it progresses. When it has finished, it will
prompt you for additional input filemasks. You may either enter another
mask or simply press return to exit back to Dos.
LZ and SpartaDos 3.2
--------------------
If you are using SpartaDos 3.2, you may invoke LZ.COM and specify
the output file and input filemask on the command line. The format is:
[Dn:]LZ Dn:[path>]filename[.ext] [Dn:[path>]filename[.ext] ]
The square brackets denote optional parameters which may be omitted.
The first filename is the output file. The second is the input
filemask. If you do not specify the input filemask, the program will
prompt you for it. The program will automatically turn the screen off.
When it is finished it will prompt you for more input filemasks.
To invoke LZ as part of a batch file, the format is almost identical.
The lines in the batch file would be:
[Dn:]LZ Dn:[path>]filename[.ext] [Dn:[path>]filename[.ext] ]
Dn:[path>]filename[.ext] <- Additional
Dn:[path>]filename[.ext] input masks
The program will read each input filemask, compress the files
selected and continue until all the input masks have been used. You will
then be prompted for more input masks. If this is part of a larger batch
file, leave a single return after the last input mask to force LZ to
return control back to the batch file. Example:
[Dn:]LZ Dn:[path>]filename[.ext] [Dn:[path>]filename[.ext] ]
Dn:[path>]filename[.ext]
Dn:[path>]filename[.ext]
(single return here)
[Dn:]LZ Dn:[path>]filename[.ext] [Dn:[path>]filename[.ext] ]
Dn:[path>]filename[.ext]
Dn:[path>]filename[.ext]
(single return here)
At the end of this, you will be left at the Dos prompt. Because of
the way i/o redirection is handled, an alternative form is available:
[Dn:]LZ
Dn:[path>]filename[.ext] <- The output file
Dn:[path>]filename[.ext] <- The input filemask
Y <- Turn the screen off
Dn:[path>]filename[.ext] <- Additional
Dn:[path>]filename[.ext] <- input filemasks
(single return here)
Notice that the Y was only supplied once. When LZ is run in this
manner, it behaves exactly as if you were pressing the keys yourself. If
you turn the screen off, then you need only enter the Y once. If you
said N, then you would need an N after every input filemask until you
said Y. Example:
[Dn:]LZ
Dn:[path>]filename[.ext] <- The output file
Dn:[path>]filename[.ext] <- The input filemask
N <- Leave the screen on
Dn:[path>]filename[.ext] <- Additional mask
N <- Leave the screen on
Dn:[path>]filename[.ext] <- Additional mask
Y <- Screen off now
Dn:[path>]filename[.ext] <- Additional masks, but no Y
Dn:[path>]filename[.ext] <- is necessary
(single return here)
Getting Them Back
-----------------
To extract the files from an Alfcrunch file, load DZ.COM The title
will be displayed, along with the version number.
The first prompt is for the name of the file to uncrunch. This
filename may be up to 80 characters long, including subdirectory names.
Wildcards are not allowed.
The next prompt is the output directory. This is the directory where
the files will be placed when extracted from the crunch file. If the
directory does not exist, an attempt will be made to create the
directory. This may involve creating a number of subdirectories to get
to the last one, so care should exercised with this feature. If
errors occur during the directory build stage, an error message will be
displayed, and the program will return to DOS. You may specify a wildcard to
only extract certain files or use '*.*' to extract them all. *.* is the default.
Auto directory creation is only available under SpartaDos. Under
any other Dos, if you specify a subdirectory, you will probably get
a single file with the name of the first pathname.
Assuming all is well, you again have the option of turning the screen
off while files are being extracted.
The program will then extract each file and place it in the output
directory specified. If any errors occur, an error message is printed
and the program returns to Dos. When all files have been extracted, you
will be prompted for another input file. You may enter another filename
or press Return to exit to Dos.
The situation may arise where the crunch file has been corrupted.
This may occur due to errors during download, or failure of the disk on
which the file resides. There are several error messages which are
associated with bit errors.
Msg: Not An AlfCrunch File!
---------------------------
If this message is issued before any files were extracted, then
either the first two bytes of the file are corrupt, or else the file was
not created by AlfCrunch. If the message is issued after several files
were extracted, then the file has been damaged somewhere in the last
file extracted. You may also get the message which is described next.
Msg: File Checksum In Error
---------------------------
DZ has detected that the checksum calculated for the filename just
extracted does not agree with the checksum in the header block. Either
the header block has been damaged or more likely, the file itself has
been corrupted. If the file is a text file, it may be partially correct.
Object file types should be discarded, as it must be assumed they are
corrupt.
Msg: Stack Overrun
------------------
This is an internal DZ error. The file being processed has been
corrupted, and DZ has exhausted all free memory in attempting to extract
the data. The output file produced is incomplete, corrupt, and should be
discarded.
Msg: Extra Bytes At Eof, Don't Add To File
------------------------------------------
This means that the file has extra data at the end which is not valid.
This may arise from downloading where the last block is padded. Do not add
new files to it with LZ as you will not be able to get them back when you run
DZ again. You will get the 'Not An AlfCrunch File!' message at that time.
DZ and SpartaDos 3.2
--------------------
If you are using SpartaDos 3.2, you may invoke DZ.COM and specify
the input file and output directory on the command line. The format is:
[Dn:]DZ Dn:[path>]filename[.ext] [Dn:[path>][*.*]
The square brackets denote optional parameters which may be omiited
if you wish. The first filename is the file to be processed. The second
filename is the directory in which the output files are to be placed.
Remember, if any of the directories in the output path do not exist, an
attempt will be made to create them. Remember, you can use a wildcard to
limit the files or take the default
which is '*.*'.
The program will automatically turn the screen off, and extract
the files. If any errors occur, the appropriate error message will
be printed and control will return to Dos.
When DZ is finished with the current input file, it will again prompt
you for another input file. You may continue uncrunching files, or
simply press return to exit back to Dos.
As part of a batch file, the form for DZ is almost identical to the
LZ form. Accordingly, only brief examples will be shown:
[Dn:]DZ Dn:[path>]filename[.ext] [Dn:[path>][*.*]
Dn:[path>]filename[.ext] <- Second input file
Dn:[path>][*.*] <- Second output path
Dn:[path>]filename[.ext] <- Third input file
Dn:[path>][*.*] <- Third output path
(single return) <- Return to Dos
The second format is:
[Dn:]DZ Dn:[path>]filename[.ext] <- First input file
Dn:[path>][*.*] <- First output path
Dn:[path>]filename[.ext] <- Second input file
Dn:[path>][*.*] <- Second output path
Dn:[path>]filename[.ext] <- Third input file
Dn:[path>][*.*] <- Third output path
(single return) <- Return to Dos
The third format is:
[Dn:]DZ
Dn:[path>]filename[.ext] <- First input file
Dn:[path>][*.*] <- First output path
Y <- Screen off
Dn:[path>]filename[.ext] <- Second input file
Dn:[path>][*.*] <- Second output path
Dn:[path>]filename[.ext] <- Third input file
Dn:[path>][*.*] <- Third output path
(single return) <- Exit to Dos
|