Amiga archives: LHA, LZX, DMS and Zip
Open Amiga archives in the browser — LHA/LZH (-lh0- to -lh7-), LZX, DMS disk images (every packing mode, including obfuscated ones) and Zip — list them with sizes, dates, protection bits and comments, check CRCs, extract files or everything as a ZIP, and send a DMS disk or an ADF inside an archive to the ADF explorer.
Added
Works with
- Amiga ADF disk images Retro computinghands unpacked disks there, and takes archives found on a disk
- AmigaGuide viewer Retro computingopens a .guide file from the archive
- ProTracker MOD player and editor Retro computingopens a MOD from the archive
- Retro disk and tape images Retro computinghands DMS, LHA, LZX and ZIP files here
How to use it
Drop an archive on the page, or click to choose one. Nothing is uploaded; everything is unpacked in your browser. Try a sample opens a small LHA made on the spot, with comments, protection bits and an AmigaGuide file.
-
The summary names the format, the packing methods, the total sizes and, for LHA and Zip, the system that made the archive.
-
The listing shows each file’s path, size, packed size and ratio, method, date, Amiga protection bits (
hsparwed, as in the ADF explorer) and file comment. On a phone the details sit under the name. Filter names narrows a long listing. -
View unpacks a file and shows it as text (Latin-1, as on the Amiga) or hex, and its CRC result: ✓ good, ✗ bad. ↓ downloads it. Test all CRCs unpacks every file, and Extract all as ZIP saves them with their folders.
-
A DMS file shows its header — disk type, packing mode, track range, creation date, the DMS version that made it — a map of the 80 tracks coloured by checksum, and any banner text. Open in ADF explorer hands the unpacked disk to the ADF tool in a new tab; Download .adf saves it.
-
From the viewer, an
.adfor.adzfile goes to the ADF explorer, an AmigaGuide file to the AmigaGuide viewer, and an archive inside the archive opens here. The ADF explorer sends archives it finds on a disk here the same way.
Formats
- LHA / LZH
-
Haruyasu Yoshizaki’s LHarc successor, the standard Amiga archiver (LhA by Stefan Boberg on the Amiga). Each file has a header — level 0, 1 or 2 — then its packed data.
-lh0-is stored;-lh4-,-lh5-,-lh6-and-lh7-are LZSS with static Huffman coding over 4, 8, 32 and 64 KB windows: each block carries its own code-length tables, packed with a small Huffman code of their own. Amiga LhA puts the file comment after a NUL in the file name and the protection bits in the attribute byte; level 1 and 2 headers add extended headers for the folder, comment and attributes. Every file has a CRC-16 (CRC-16/ARC). Self-extracting archives (.run) open too: the tool finds the first header. - LZX
-
Jonathan Forbes and Tomi Poutanen’s archiver (1995), a forerunner of Microsoft’s CAB LZX. Files are often merged: several files packed as one stream, listed as
mergedwith the packed size of the whole group (marked ∑, and its ratio taken over the group) on the last file of the group. The stream is LZ77 over a 64 KB window, in blocks that each start with a 3-bit type (verbatim, or aligned offsets with an extra 8-symbol table), a 24-bit length and the 768-symbol literal/length table sent as differences from the previous block’s. Bits are read from 16-bit big-endian words, low bit first. Each file has a CRC-32; the 31-byte headers have their own. Dates use the year mapping of the LZX Y2K fix, so files dated 2000 and later show correctly. - DMS
-
The Disk Masher System (1991) packs a floppy track by track: a 56-byte header, then for each track a 20-byte header (
TR, track number, packed / intermediate / unpacked lengths, flags, mode, checksum of the unpacked data, CRC of the packed data, CRC of the header) and its data. The modes are NONE, SIMPLE (run-length), QUICK (LZ with a 256-byte window), MEDIUM (LZ, 16 KB), DEEP (LZ with the adaptive Huffman coding of Okumura’s LZHUF), HEAVY1 and HEAVY2 (LZ with static Huffman tables, 4 or 8 KB); QUICK to DEEP, and HEAVY when flagged, are followed by the SIMPLE run-length pass. A flag keeps the dictionary between tracks. A "password" only XORs the data with a 16-bit running key made from the password’s CRC, so the tool can find the key itself by trying all 65,536 (a second or so) — or type the password. Pseudo-tracks numbered 80 or above, or negative, hold banner text. - Zip
-
Stored and deflate entries (the browser’s own inflater). Encrypted entries are not supported.
Sources: the LHA format as documented by Lhasa (Simon Howard, ISC licence), whose Amiga test
archives this tool is tested against; unlzx.c 1.1 (Oliver Gantert and others, public domain)
for LZX; ancient by Teemu Suutari (BSD 2-clause) and xDMS by André Rodrigues de la Rocha (public
domain) for DMS; the bitplane amiga-lzx notes for the LZX date field; PKWARE’s APPNOTE for
Zip. The tests unpack real archives made by LhA 1.22 and 2.12 for the Amiga, LZX and DMS (one
disk packed in every mode) and compare the results with Lhasa and unlzx.
Limits
-
LHA
-lh1-(adaptive Huffman, LHarc 1.x),-lh2-/-lh3-, LArc (-lz5-,-lzs-) and PMarc methods are listed but not unpacked. -
LZX mode 2 ("normal") and stored are supported; other pack modes are not known to exist.
-
DMS: Amiga DD and HD disks only — FMS (file-archive) DMS and MS-DOS disks are refused. Real DMS encryption beyond the 16-bit obfuscation does not exist. Tracks missing from a file are left zero-filled.
-
Archives are unpacked in memory, so very large archives (hundreds of MB) may be slow on a phone. Disk images and archives handed between tools stay in this browser.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.