Kago

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:\>