Skip to content

Releases: AbelVincze/commodoreFileBrowser

Commodore File Browser 1.0 (build 8)

Choose a tag to compare

@AbelVincze AbelVincze released this 10 Sep 00:08

The columns keep up with the Finder. Drop a file on the window to open it. And half the download.

Download — two builds, one per processor:

CommodoreFileBrowser-1.0-build8-macOS-arm64.zip Apple Silicon — M1 and later
CommodoreFileBrowser-1.0-build8-macOS-x86_64.zip Intel Macs

Unzip and drag CommodoreFileBrowser.app to your Applications folder. If you
are unsure which you want, the Apple menu › About This Mac says: "Chip" is
Apple Silicon, "Processor" is Intel.

Requires macOS 14 or later. Version 1.0, build 8.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

The first launch also puts up a notice asking you to keep a backup of any disk
image you would be sorry to lose before editing it. It appears once; Settings ›
Files brings it back.

What's new since build 7

The columns follow what happens outside the app. Until now they were
snapshots: they redrew when this app moved something and at no other time. A
file written in the Finder, a disk mounted, a folder deleted out from under the
column standing in it — none of it reached the listing, and that last one left
you inside a folder that no longer existed, where every key failed.

Now each column watches the folder it is showing. A file written, renamed or
deleted somewhere else appears or disappears here, the way the Finder already
followed what this app did. Mounting a disk puts it in the volume list without
being asked, and ejecting one walks the column off it rather than leaving it
pointing at a disk that has gone. A folder deleted under a column drops it into
the nearest folder still there — past several levels, if a whole tree went.

A redraw from outside is careful not to move you: a listing that comes back the
same is left alone, and the cursor and your marks stay on the rows they were on
even as files appear above them. An open disk image is not touched at all,
since it may be holding edits that are not on disk yet — only its disappearance
is acted on. And nothing redraws underneath a dialog; it waits until you close
it.

A file dropped on the window opens. The two columns take a drop and copy it
in. The rest of the window — the title band, the key bar, the strip the column
headers sit on — used to take nothing at all, and a file let go there fell on
the floor.

Now it opens, the way a document dropped on an application does. Nothing is
copied anywhere: the column goes to the file and opens it for what it is. A
disk image is listed straight away, without stopping in the folder that holds
it. A folder is opened. Anything else opens the folder it lives in with the
cursor on it, and then a picture is shown and a tune, a module or a sample is
played. A border round the window while you hold the drag says the drop will do
something.

Half the download. The app was carrying its full symbol table — 64,185
names, three megabytes of text, for two and a half megabytes of actual code.
Release builds are stripped and dead-code stripped now: the app binary went
from 7.7 MB to 3.3 MB, the Quick Look extension from 3.0 MB to 1.5 MB, and the
bundle from 11 MB to 4.8 MB. Nothing about the app changed but its size.

Commodore File Browser 1.0 (build 7)

Choose a tag to compare

@AbelVincze AbelVincze released this 09 Sep 21:59

Sync two folders. Read C64 pictures. And a word about backups.

Download — two builds this time, one per processor:

CommodoreFileBrowser-1.0-build7-macOS-arm64.zip Apple Silicon — M1 and later
CommodoreFileBrowser-1.0-build7-macOS-x86_64.zip Intel Macs

Unzip and drag CommodoreFileBrowser.app to your Applications folder. If you
are unsure which you want, the Apple menu › About This Mac says: "Chip" is
Apple Silicon, "Processor" is Intel.

Requires macOS 14 or later. Version 1.0, build 7.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

The first launch also puts up a notice asking you to keep a backup of any disk
image you would be sorry to lose before editing it. It appears once; Settings ›
Files brings it back.

What's new since build 6

Sync Folders — ⇧⌘S. Compares the two panels' folders all the way down and
reports what they differ by, then applies the differences you agree to. Both
sides are ordinary Mac folders, and a disk image is compared whole rather than
entered.

Differences are found by hashing, not by name and date, so a renamed file reads
as a rename rather than as one file added and another deleted.

Two folders that both change cannot be compared honestly by looking only at the
two of them: a file here and not there is added here or deleted there, and
they call for opposite actions. So a sync writes down what the two sides then
agreed on, and the next one compares three ways — whichever side no longer
matches the record is the side that moved. Every verdict says which side that
was: "Renamed on left", "Changed left, deleted right", "Unreadable on right".

Where the evidence runs out it leaves more data rather than less. A first run
proposes no deletion at all, and neither does a record that is missing or
damaged. A folder that will not open makes no claim about what is inside it.
Two files with the same content are never called a rename. Deletions are off
unless you tick the box, and then always to the Trash.

The run happens in front of you with a progress bar, the file being copied, and
how far through it is — 214 of 617 files · 412 MB of 980 MB. Stop ends it
between files; everything copied so far stays.

C64 pictures in the viewer. F3 on a picture opens it in its own colours,
beside the Amiga ILBMs that were already there: Koala Painter, Art Studio and
its Advanced sibling, Doodle, Hi-Eddi, Face Painter, Run Paint, Interpaint,
Amica Paint, Blackmail FLI, Paint Magic, and a raw screen saved with no load
address.

None of these files says what it is — a painter dumped the VIC-II's memory to
disk and its loader put it back — so each is recognised by its exact size and
load address together, and refused rather than guessed at when neither matches.
Correct aspect draws them at the PAL pixel ratio, which nothing in any of
these files records because it was a property of the television. Quick Look
draws them too, so a folder of Koalas reads as pictures in Finder.

Paint Magic had no description to find, so it was worked out from a disk of
them and its own display code.

Return plays, F3 views. Opening the viewer from Return made the key
mean two things. It now plays a tune, a module or a sample and nothing else —
and recognises a picture only to say which key to press.

Print Directory — ⌘P. Prints what the active panel is showing, in the
character ROM's own glyphs: the reverse-video header, the block counts, the
quoted names with their decoration, and the free-block line the drive prints
underneath. Size and columns are set in the print dialog against a live
preview; two columns put a full 1541 directory on one sheet.

Fixed. The SID player no longer raises an error on close when it has walked
past the end of a folder onto a file it does not recognise.

Commodore File Browser 1.0 (build 6)

Choose a tag to compare

@AbelVincze AbelVincze released this 09 Sep 08:58

Everything a decorated directory is made of, editable byte by byte.

Download: CommodoreFileBrowser-1.0-build6-macOS.zip — unzip and drag
CommodoreFileBrowser.app to your Applications folder.

Requires macOS 14 or later. Universal binary (Apple Silicon and Intel). Version
1.0, build 6.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

What's new since build 5

Advanced. Edit Disk Header, Rename and Add DEL Entry each ask for a
name in a plain text field, in the system font, which is right for nearly
everything and cannot say the half of PETSCII a decorated directory is written
in. Each of the three now carries an Advanced disclosure that opens onto
the bytes themselves.

The editor is a row of cells drawn from the character ROM. Typing writes into
the cell under the caret and steps on, the arrows move it, blanks a cell
back to a shifted space, and clicking one puts the caret there. Below sits a
grid of every character no key reaches — the graphics, the reverse video
forms, the shifted space itself — which the character set picker draws in
either half of the ROM, and Every byte widens to all 256.

A rename opens on the whole 16 byte name field, past the shifted space as
well as before it. That is the point of it: a drive closes the quote on the
first shifted space and prints the rest of the field after it as ordinary
characters, which is where a decorated row keeps its graphics. Beside the field
is the block count the row prints, written as given and checked against
nothing, which is what lets a directory count in pictures. Add DEL Entry
offers exactly the same, since a spacer row and a file's row are decorated
alike.

The header opens on the whole reverse-video line: sixteen bytes of name,
two of padding, the two ID bytes, one more pad and the DOS type. One slice
covers every format from the D64 to the D82 — they all lay those fields out in
that order and only start them at a different place in the header sector. The
first pad byte is where the drive puts the closing quote, so it never prints;
everything after it does.

Blocks free sets the figure the listing ends on by moving the per-track
free counters and leaving the allocation map alone — the way a demo disk claims
to be empty with the files still on it. The existing counts are nudged rather
than rebuilt, so the disk stays as close to its real shape as the figure
allows. Repair Disk counts the map, so it would put the number back, and the
dialog says so.

Two rendering fixes were needed before any of this would show. A directory
row now closes its quote on the first shifted space and prints the rest of the
field after it, padded to the eighteen columns that keep the file type in line,
exactly as a drive does — before, everything went inside the quotes and a
decorated name came out as one long quoted string. And the header line is drawn
from the header bytes rather than spelling the gaps as spaces, so an edited pad
byte or DOS type actually appears in the panel.

One thing worth knowing: the browser draws PETSCII $00-$1F as the reverse
video glyphs, which is why they are in the grid. On a real machine those are
control codes — $12 turns reverse video on for the rest of the line — so a
name built from them reads differently on hardware than it does here.

Also: Repair Disk has the ⇧⌘R shortcut the help and the README already
claimed.

SHA-256 of the zip:

a8a2ab10d115020e2d2db514b17d564d7dd0b803ea01b190f745746fb8c3b6c8

Commodore File Browser 1.0 (build 5)

Choose a tag to compare

@AbelVincze AbelVincze released this 08 Sep 19:33

Quick Look previews and thumbnails, Repair Disk, and drag and drop.

Download: CommodoreFileBrowser-1.0-build5-macOS.zip — unzip and drag
CommodoreFileBrowser.app to your Applications folder.

Requires macOS 14 or later. Universal binary (Apple Silicon and Intel). Version
1.0, build 5.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

What's new since build 4

Quick Look. Two app extensions put the browser's own readers behind
Finder's space bar. An IFF picture becomes its own thumbnail, drawn at the
shape it was meant to have rather than squared off, so a folder of ILBMs reads
as pictures instead of as a wall of blank pages — the thumbnail extension
compiles the picture reader and nothing else, because the system will not wait
while an engine warms up. A preview shows a picture with its size and mode;
on a SID tune, a tracker module or an 8SVX sample it says what the file is and
starts playing, and stops when Quick Look tears the preview down, so walking a
folder with the arrow keys does not leave ten tunes running.

Both decide what a file is from its own bytes. What they cannot decide is which
files to be offered: Quick Look routes by type and a type comes from the
extension, so .iff, .ilbm, .lbm, .anim, .8svx, .sid, .mod, .xm,
.s3m, .it, .med and a few more work, while an Amiga file called
mod.something does not — that is what the browser itself is for. The
extensions register when the app is first run from /Applications; System
Settings › General › Login Items & Extensions › Quick Look
lists them.

Repair Disk (Validate). The 1541's VALIDATE, with a report first. It
walks every file's block chain — and a REL file's side sectors, which nothing
else here follows — rebuilds the allocation map from what it found, corrects
the block count on every entry that disagrees with its own file, and hands back
the sectors that were marked allocated and used by nothing. It shows all of
that before it writes anything: the unclosed files it will scratch, the counts
it will correct, how many sectors it will free, and what the free count will be
afterwards. Like every other edit to an image it lands in memory, so Esc
still discards it and ⌘S still commits it.

What it will not do is guess. Two closed files claiming one sector, or a chain
that walks off the disk, is damage an allocation map cannot describe: the
report names the files and nothing is written. Of the 48 disks it was written
against, 41 come out clean and 7 fall that way. A DEL entry owns nothing, so
directory art is read as the decoration it is and left alone.

Drag and drop, in and out. Between the two panels, and to and from the
Finder. A drag started on a marked row takes every marked row with it.

Which of move and copy a drop means is decided the way the Finder decides it:
two folders on the same volume move, two volumes copy, and held at
the drop asks for whichever of the two the volumes did not imply. The inside
of an image counts as a volume of its own
, so anything crossing that boundary
copies by default — which is also what it has to be, with the bytes rewritten
into the other format on the way. Copying between two directories of one image,
on the other hand, moves.

The badge under the pointer says which it will be, and the panel says where it
will land: an outline around the whole column for the folder it is showing, or
around a single row for a folder inside it. Dropping back where the files
already are, a folder into a disk image, anything into a read-only image, and a
folder inside itself are all refused before the mouse is let go. Rows dragged
out of an image are written to a temporary folder as the drag starts, since a
directory entry is not a file until something makes one of it. A move the
Finder makes happens on its own queue after the drag has ended, so the panel
follows the files it let go of and redraws itself the moment one of them goes.

SHA-256 of the zip:

f624e5b4e98872af9d5be47ad693ff89518edd9bb3b2629a030fd528e7cff4d6

Commodore File Browser 1.0 (build 4)

Choose a tag to compare

@AbelVincze AbelVincze released this 08 Sep 10:56

Amiga IFF: pictures and samples, and five fixes.

Download: CommodoreFileBrowser-1.0-build4-macOS.zip — unzip and drag
CommodoreFileBrowser.app to your Applications folder.

Requires macOS 14 or later. Universal binary (Apple Silicon and Intel). Version
1.0, build 4.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

What's new since build 3

Amiga IFF pictures. Return on an ILBM shows it, and the viewer has a
fourth mode — Hex / Bitmap / Image / Basic — so F3 on a picture opens on
the picture rather than on a hex dump of it. One to eight bitplanes, ByteRun1
and uncompressed bodies, EHB (Extra Half-Brite, where the upper 32 indices
are the lower 32 halved) and HAM6/HAM8 (hold-and-modify, where most pixels
are a change to one channel of the pixel to the left). An ANIM shows its
first frame and says how many it is not showing. A DPaint stencil, which has no
colour planes at all, is drawn from the mask it keeps where they would be. A
four-bit palette parked in the high nibble — how the machines of the day wrote
one — is widened rather than rendered at half brightness.

Correct aspect shows a picture the shape it was drawn as; an Amiga pixel was
not square and the file records how far from square. Save as PNG writes it at
one pixel per Amiga pixel, whatever the zoom.

Amiga IFF samples. Return on an 8SVX plays it, in a sheet with the same
transport and oscilloscope as the other two players. The audio node is built at
the file's own rate — there are 26 distinct rates in a collection of 550 — so
nothing is resampled by hand. An instrument's loop plays the way it was meant
to be held: the attack once, then the tail round and round.

The app icon is rebuilt from app_icon.png by the build itself, so editing
the artwork is all it now takes.

Fixes

  • Keystrokes no longer queue behind an error message. A function key still
    ran while an alert was up — the sheet it asked for could not be shown over
    the alert, so it waited and sprang open the moment the alert was dismissed —
    and ⌘D, being a menu shortcut, moved a panel nobody could see. The browser
    now takes no input at all while a sheet or an error is up, and the menus and
    the key bar go grey to say so. ⌘Q still quits.
  • Play as SID from the right-click menu detects the addresses. It was
    skipping detection altogether and guessing init = load, play = load + 3,
    which is wrong for anything with a PSID header in front of it. The
    hand-entry version it used to be is the entry below it now.
  • A tune that only says "more than one song" no longer claims to have 32.
    That 32 was a placeholder written into the song count, not anything read from
    the file. It reads multiple songs where the number is genuinely unknown.
  • The listing is set in one font. Size, flags and date are in the face and
    size the file names use, with the figures held to an even width so the
    right-aligned columns do not shuffle as the listing scrolls.
  • Exact byte counts on the Mac side, the way an Amiga volume has always
    shown them, rather than 1 KB — the last hundred bytes are what decide
    whether a file still fits a 170K disk.
  • Copying out of a Commodore image can leave the .prg off. The extension
    is still added by default, since it is the only place the file type survives,
    but the copy sheet has a checkbox for it now and the choice is remembered.

SHA-256 of the zip:

a8294473d5f5aa914844a631fb44f5105f4175108d5e49922fa79a44e479bdaf

Commodore File Browser 1.0

Choose a tag to compare

@AbelVincze AbelVincze released this 07 Sep 14:07

A two-panel file manager for macOS that treats retro disk images as folders.
Copy files between the Mac file system and Commodore or Amiga images, with the
directory of a Commodore image drawn in the original C64 character set — and
play the music you find in them.

Download: CommodoreFileBrowser-1.0-macOS.zip — unzip and drag
CommodoreFileBrowser.app to your Applications folder.

Requires macOS 14 or later. Universal binary (Apple Silicon and Intel).

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

What's in it

  • Commodore disks — 1541, 1571, 1581, the 2040 that came before them, and the
    8050 / 8250 of the PET drives — plus T64 tape archives and X64 containers.
  • Amiga disks — ADF floppies (OFS and FFS), UAE hardfiles with or without a
    partition table, and DMS archives.
  • Copy, move, rename, delete and make folders in all four directions between
    the Mac and an image, or between two open images.
  • Editing an image is a transaction: nothing touches the file on disk until you
    commit.
  • SID and module playback for the music you find inside.

SHA-256 of the zip:

a699fc5b5cc48232bad4db32669562495a6d75ffec4b537b44d0549604f52dd5

Commodore File Browser 1.0 (build 3)

Choose a tag to compare

@AbelVincze AbelVincze released this 07 Sep 15:46

The module player catches up with the SID player.

Download: CommodoreFileBrowser-1.0-build3-macOS.zip — unzip and drag
CommodoreFileBrowser.app to your Applications folder.

Requires macOS 14 or later. Universal binary (Apple Silicon and Intel). Version
1.0, build 3.

First launch

The app is signed to run locally rather than notarized, so macOS will refuse to
open it on the first try. Right-click the app and choose Open, then confirm
in the dialog that appears. You only need to do this once.

What's new since 1.0

  • The tracker sheet has the SID sheet's transport: play/pause, stop and a fast
    forward you hold. ⌘↑ / ⌘↓ play the previous or next file and cross
    between the two players by themselves, since the file being stepped to is
    what decides which sheet opens; ⌘← / ⌘→ step the songs inside a module.
  • An oscilloscope on modules, mixed or left over right, with the same video
    export under it — 720p, 1080p or 4K at 4:3 or 16:9, with a stereo soundtrack.
  • Fast forward on a module runs at four times rather than the SID player's ten,
    because four is where libopenmpt's tempo factor stops. A chiptune player
    routine has no tempo to change, so its key is disabled rather than pretending.
  • Fixed: stepping to the next module loaded it but left it silent. The sheet
    being taken down was unloading the module the arrows had just put in.
  • The module stereo control is a switch now rather than a percentage: on is the
    stereo the file asks for, off mixes every channel to both sides.

SHA-256 of the zip:

a8d157e9f5eecdcacc16d325b004380a48d5d0e7b023ad8f1a09f2ed5779f523