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:
and with a 2.1 Workbench:
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.