cbmls v1.0.0/Style

Release Date: 
April 20, 2019

cbmls is an ls-like lister for CBM emulator formats (like .d64 and .p00) and old archive containers (like .lnx and [1-4]! zips). If you know what 'ls' is you'll find comfort with some of the command line options (try 'cbmls --help')

Notable features:

  • recursively process file system subdirectories

  • recursively process *within* disk images and file containers

  • choice of output: canonical "$" style or columns
  • control over column output/order
  • sensible output for cp437 or Unicode
  • use with our font, C64 Pro Mono, for a genuine PETSCII shell experience


cbmls will present as good an output as possible in a default cmd shell... some PETSCII characters map sensibly and color is an option.

cmd on Windows XP

and with colorized output...

It's a little smoother if you switch to a TrueType font. But some TrueType fonts, like the Lucida Console used below, don't have all the applicable characters that we can map to from PETSCII and show filler as seen in the middle...  other TrueType fonts have a fuller set of glyphs like PragmataPro on the right.

Windows 8.1 with Lucida font

Lucida is missing some glyphs...

but PragmataPro has them!

Of course the best way for hardcore c64 freaks to look at their directories is made possible with our C64 Pro Mono font:

Windows 7 and the majesty of load"$",8

cbmls works similarly on Linux and macOS:

Mate Terminal on Mint

iTerm2 on Mac OS X 10.7

General Use:

cbmls is a typical command line utility, use "cbmls --help" for a list of all options. cbmls will try to process all 'loose' arguments on the command line as a potential disk/archive image or directory. Order or mixture with command options does not matter. There is also some support for reading disk/archive data from a pipe or redirection. Default behavior is to list directories in the 'canonical' load"$" format. A column-based listing is also available, and you have full control of column selection and ordering. The following shows the 'long listing' (-l or --long) output which is a short cut for outputting every column: blocks, bytes, index, track/sector, load address, name, splat, type and lock (there are no splatted/locked files on this directory):

output from 'cbmls -lc happy--style.d64'

Recursion, or directory traversal if you prefer, is possible in two axes: recursion through the os file system and recursion through disk/archive contents. The latter is referred to in the program as a deep listing and when selected cbmls will show you the contents of archives, subdirectories and partitions, as deep as possible (e.g. an arc inside a lnx inside a zip-4 inside a 1581 subdir).


List the contents of oldstuff.lbr and disk.d64 using the long column output, with color.

cbmls oldstuff.lbr -lc disk.d64

Pipe an uncompressed disk image into cbmls for listing, using the lower/upper character mode instead of the default upper/graphics:

xz -d mule.d64.xz | cbmls -C lower

List the contents of every recognized disk image and container starting with the current working directory (all files and recursing into all subdirectories):

cbmls -lR .

Deep list the contents of the .d4m image using color, outputting three columns in the given order - this will include the contents of all partitions and any archiver containers discovered therein:

cbmls -dc disk.d4m --columns bytes,name,index

Note that the argument for '--columns' must be a comma-separated list, with no spaces! 'cbmls --help' will show you the possible valid column names.