Examples
Each example is a session on an MSX running MSX-DOS2, with the full output of every command, as the screen shows it.
Packing a directory tree into a ZIP archive
Name a directory and everything under it goes in, at every depth: an entry for each directory, then its files. .ZIP chooses the format; .LZH or .PMA would choose the others.
A:\>kago game.zip game KAGO LZH/PMA/ZIP Compressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Adding GAME\ OK Adding GAME\GAME.COM OK Adding GAME\GAME.DAT OK Adding GAME\README.TXT OK Adding GAME\MUSIC\ OK Adding GAME\MUSIC\TITLE.MWM OK Adding GAME\MUSIC\STAGE1.MWM OK Adding GAME\MUSIC\STAGE2.MWM OK Adding GAME\SAVE\ OK A:\>
Listing an LZH archive made on a modern computer
lha on a modern computer packs with -lh7- and -lh6- (64 KB and 32 KB windows), which the older MSX extractors cannot open. UNKAGO reads them, keeping the window in mapper memory. /L lists without extracting: the packed and original sizes, the method, the date and the path.
A:\DOWNLOAD>unkago /l sdk.lzh UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Packed Original Method Date Name ---------- ---------- ------ ---------------- ------------ 0 0 -lhd- 2026-09-14 21:03 sdk\ 5112 14837 -lh7- 2026-09-14 21:02 sdk\README.md 19634 61402 -lh7- 2026-09-14 20:57 sdk\msxbios.inc 8327 23119 -lh7- 2026-09-14 20:57 sdk\msxdos2.inc 0 0 -lhd- 2026-09-14 21:03 sdk\examples\ 911 2240 -lh6- 2026-09-12 18:44 sdk\examples\hello.as 4406 9984 -lh7- 2026-09-12 18:45 sdk\examples\sprites.as ---------- ---------- ------ ------------ 38390 111582 7 files A:\DOWNLOAD>
Writing a PMA archive
PMA is the format of PMarc and PMARC2. KAGO packs it with -pm2-, and PMEXT extracts the archive it writes. Unlike PMARC2, KAGO records each file’s real date and its exact size.
A:\EDITOR>kago tools.pma *.com *.doc KAGO LZH/PMA/ZIP Compressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Adding EDIT.COM OK Adding FIND.COM OK Adding EDIT.DOC OK Adding FIND.DOC OK A:\EDITOR>unkago /l tools.pma UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Packed Original Method Date Name ---------- ---------- ------ ---------------- ------------ 9418 15744 -pm2- 2026-08-30 22:15 EDIT.COM 2190 3328 -pm2- 2026-08-30 22:16 FIND.COM 6025 17903 -pm2- 2026-08-29 19:40 EDIT.DOC 1342 3071 -pm2- 2026-08-29 19:52 FIND.DOC ---------- ---------- ------ ------------ 18975 40046 4 files A:\EDITOR>
Extracting a ZIP archive into another directory
/D: extracts somewhere else, and creates the destination if it is missing. Long names that do not fit MSX-DOS’s 8.3 form are shortened the way Windows shortens them for MS-DOS, and the line says so. Before writing anything, UNKAGO checks that everything fits on the disk and in memory.
A:\>unkago /d:b:\backup rescue.zip UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Extracting Space Rescue\ as SPACER~1\ OK Extracting Space Rescue\rescue.com as SPACER~1\RESCUE.COM OK Extracting Space Rescue\read me.txt as SPACER~1\README~1.TXT OK Extracting Space Rescue\gfx\ as SPACER~1\GFX\ OK Extracting Space Rescue\gfx\title.sc5 as SPACER~1\GFX\TITLE.SC5 OK Extracting Space Rescue\gfx\sprites.dat as SPACER~1\GFX\SPRITES.DAT OK A:\>
Opening a self-extracting PMA file
Many MSX programs were distributed as self-extracting PMA files, .COM programs that unpack themselves. UNKAGO reads the archive inside without running it, and leaves out the extractor it carries. This is PMEXT222.COM, the distribution of PMEXT 2.22.
A:\>unkago /l pmext222.com UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Packed Original Method Date Name ---------- ---------- ------ ---------------- ------------ 477 913 -pm2- 1991-07-23 18:25 !. 4989 12186 -pm2- 1991-07-23 18:07 PMEXT2.DOC 8140 12928 -pm2- 1991-07-23 17:30 PMEXT.COM ---------- ---------- ------ ------------ 13606 26027 3 files A:\>unkago /q pmext222.com Extracting !. OK Extracting PMEXT2.DOC OK Extracting PMEXT.COM OK A:\>
Adding files to an LZH archive
With /A, KAGO adds to an archive that exists, in any of the three formats. A file whose path is already in the archive replaces the old member; the others are copied byte for byte. The new archive is written beside the old one first, so if anything goes wrong the old one is left as it was.
A:\WORK>kago /a docs.lzh *.txt KAGO LZH/PMA/ZIP Compressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Replacing NOTES.TXT OK Adding TODO.TXT OK Replacing README.TXT OK A:\WORK>unkago /l /q docs.lzh Packed Original Method Date Name ---------- ---------- ------ ---------------- ------------ 2210 5390 -lh5- 2026-09-02 23:11 MANUAL.DOC 1873 4512 -lh5- 2026-10-06 21:48 NOTES.TXT 402 815 -lh5- 2026-10-05 08:30 TODO.TXT 690 1428 -lh5- 2026-10-06 22:02 README.TXT ---------- ---------- ------ ------------ 5175 12145 4 files A:\WORK>
Extracting some members only
Names after the archive choose what to list or extract. * and ? work as wildcards across the whole path, and a directory’s name chooses everything under it. A name that matches nothing is reported at the end.
A:\>unkago game.zip *.mwm game\save readme.doc UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Extracting GAME\MUSIC\TITLE.MWM OK Extracting GAME\MUSIC\STAGE1.MWM OK Extracting GAME\MUSIC\STAGE2.MWM OK Extracting GAME\SAVE\ OK Not in the archive: README.DOC A:\>
Files that already exist
UNKAGO never replaces a file unless asked: it skips it, and says so. /O overwrites.
A:\GAMES>unkago /q game.zip Extracting GAME\ OK Skipping GAME\GAME.COM: it already exists Skipping GAME\GAME.DAT: it already exists Extracting GAME\README.TXT OK Extracting GAME\MUSIC\ OK Extracting GAME\MUSIC\TITLE.MWM OK Extracting GAME\MUSIC\STAGE1.MWM OK Extracting GAME\MUSIC\STAGE2.MWM OK Extracting GAME\SAVE\ OK A:\GAMES>unkago /o /q game.zip game\*.com Extracting GAME\GAME.COM OK A:\GAMES>
Packing with less memory
KAGO uses the mapper memory that is free when it runs. With less than it needs for full strength (80 KB for ZIP), it says so and asks before writing anything; packing with less makes the archive a little larger, and just as valid. /Y answers yes without asking, for batch files.
A:\>kago backup.zip work KAGO LZH/PMA/ZIP Compressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Full packing needs 80 KB of mapper memory, but only 64 KB are free. Pack with less? (Y/N) Y Adding WORK\ OK Adding WORK\MAIN.AS OK Adding WORK\MAIN.INC OK Adding WORK\BUILD.BAT OK A:\>
Not enough disk space
Before writing anything, UNKAGO adds up the space the members will take, in whole clusters, and compares it with the free space on the destination. If it does not fit, nothing is written. Choosing some members only, or another disk, solves it.
A:\>unkago /q /d:b: sdk.lzh Extracting this archive would take 128 KB on disk, but only 92 KB are free on B:. A:\>unkago /q /d:b: sdk.lzh *.as Extracting sdk\examples\hello.as OK Extracting sdk\examples\sprites.as OK A:\>
One format chosen by switch
An archive whose name does not end in .ZIP, .LZH, .LHA or .PMA gets its format from /F:. UNKAGO needs no switch: it recognises the format by itself, whatever the name.
A:\>kago /f:lzh backup.dat *.as KAGO LZH/PMA/ZIP Compressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Adding MAIN.AS OK Adding SOUND.AS OK A:\>unkago /l /q backup.dat Packed Original Method Date Name ---------- ---------- ------ ---------------- ------------ 3988 11240 -lh5- 2026-10-07 09:12 MAIN.AS 1504 3891 -lh5- 2026-10-06 23:40 SOUND.AS ---------- ---------- ------ ------------ 5492 15131 2 files A:\>
The usage, on the MSX
/?, or the tool’s name alone, prints the usage.
A:\>unkago /? UNKAGO LZH/PMA/ZIP Decompressor v1.0.1 Copyright (C) 2026 Javier Lavandeira https://kago.tools Usage: UNKAGO [switches] archive [members...] /D:path extract into path, made if missing: B: B:\TEST \TEMP TEMP\FILES /L list the archive, extract nothing /O overwrite files that already exist /Q quiet: no banner, no progress /V the banner above, and nothing else /? this text Members may use * and ?. Naming a directory extracts everything under it. A:\>