Skip to content

Arr!Jay – Amiga File System Browser

I was recently trying to transfer some software from Aminet to my Amigas. The way I planned to do it was to use a null modem cable to transfer an ADF file onto a disk. I had previously done that for system disks. In this case however, I had to prepare an ADF file by myself. Now I could have used UAE for that – since it allows for mounting directories as a filesystem.

For some reason, it does not work on my Mac, and anyways, I did not want to boot into UAE every time I wanted to prepare an ADF image. An internet search for tools I could use, pointed to ADFLib by Laurent Clevy (he also has a fantastic FAQ which describes the details about Amiga filesystems). The library is written in C, and unfortunately relies on int being 32 bits wide. I was weighing in the pros and cons of fixing the data types in the source code or writing a Scala version by myself and decided that having an ADF library running on the JVM would not be a bad thing. On the JVM, data types always have the same size.

This little project was also a great opportunity to study the implementation of file systems and explore some of Scala’s advanced features.

Over the last three weeks (working only in the evenings), I implemented

  • an ADF library
  • a file system browser (called Arr!Jay)
  • an .info reader library

This is how it currently looks like:

Arr!Jay reading a Workbench 1.3

and with a 2.1 Workbench:

Arr!Jay reading a Workbench 2.1

I originally planned a much smaller feature set, but as soon as the browser started to do something useful, there were a couple of features I had to implement. One of them was the icon viewer which, luckily, was done in less than a day.

All in all, making the file system browser was fun because I could use my stack of Amiga literature that I keep around – in this case, “Amiga Intern” and the “Intuition Reference Manual”. Since I still work on my emulation project, it was also nice to revisit the structure of planar graphics again.

I am planning to provide the browser as a download, the source code, as always, is on github, using the BSD license. I started this project mainly because I had a need for it, yet I hope that it can be of use to other Amiga enthusiasts as well.


  1. mr_a500 wrote:

    This looks very interesting. Isn’t there a way to add filesystems to OSX? It would be great if somebody could write Amiga filesystem (FFS, SFS) support for OSX, so that you could just read and write to Amiga hard drives – through IDE-to-USB adapter.

    Either that, or a separate program like yours would be nice – if it could read devices, not just ADFs. I know WinUAE can read&write to Amiga hard drives. It would be great if somebody could just take that part of WinUAE and port it to OSX.

    I’ve got lots of Amiga hard drives I’d like to transfer, back up and reload on compact flash.

    Saturday, October 29, 2011 at 3:08 pm | Permalink
  2. boxofrats wrote:

    It sounds what would be looking for is Kryoflux ( I recently had the pleasure to meet one of the hardware engineers working on it, it is a USB based solution and runs on the three major systems.

    Sunday, October 30, 2011 at 4:43 pm | Permalink
  3. mr_a500 wrote:

    Well, that’s interesting, but not what I’m looking for. As I said, it’s Amiga hard drives that I’m looking to back up, not floppies.

    I’ve got some dying 2.5″ IDE hard drives from my A500 that I’d like to back up on CF. Unfortunately, my A500 IDE card only works with one drive at a time – making backup impossible. (except by tedious serial transfer or floppy backup – not fun with 20Gb drives)

    I’ve got an IDE-to-USB adapter – and I’d be able to transfer files nicely if only OSX could read Amiga filesystems.

    Monday, October 31, 2011 at 4:08 am | Permalink
  4. boxofrats wrote:

    I see. A lot of problems with hard drive handling went away after I bought an A1200, I now just handle CF cards instead of disks. It also has an internal HD port, that could probably connect to your IDE drive(s). I don’t really have a lot experience with these kinds of setups, but there might be people on e.g. that might have had similar problems.

    Monday, October 31, 2011 at 2:24 pm | Permalink
  5. Dweller wrote:

    Interesting stuff!

    I’m in the middle of mass converting my entire old floppy collection across to adf/stream images using a Kryoflux, a modified automatic disk duplicator & a camera. I end up with directories containing the .adf, and a .bmp/.jpg of the disk (and a load of .raw for the stream data). Of course, each directory is just named as a timestamp..

    I’ve never used Scala, but I’m very familiar with Java.. I might have a go at driving your code as a library, to query into the adfs to pull the disklabels from each disk (maybe expand to say grab a README if there is one on the root, etc), and store that info in the directory alongside the adf.

    At the mo, I’m using RomCenter with the full amiga dat’s loaded, and it’s having decent success at identifying about 25% of the coverdisks I’m imaging.. but looks like there are no entries in the dats for say, Amiga Format Subscriber Disks.

    As for reading Amiga Harddisks.. iirc, Linux had filesystem support for Amiga ofs/ffs partitions..

    Thursday, December 1, 2011 at 8:54 am | Permalink
  6. MR_A500, you can just image the complete disk. OSX does not need to know anything about the filesystem. Then you put the image back.

    Or boot Linux in a virtual machine, it knows about Amiga filesystems.

    Wednesday, December 7, 2011 at 7:30 pm | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *