My father worked as an audiovisual technician in the early 80s, which exposed him to microcomputing early on.
At home we had a Commodore 64 and a Sinclair ZX81; by the age of 10, I had my first own computer: an Amiga 500.
I burned hours playing classics like Kick Off, SWIV, The Blues Brothers, The Chaos Engine, Turrican II, Toki, etc.
I got my start in digital art with Deluxe Paint IV, mostly recreating Metallica and Iron Maiden logos.
Finally, I discovered music creation using NoiseTracker and Protracker.
I recently bought an old Amiga 500 and started using Protracker to create MOD files. I also gathered a ton of samples but they were in LHA archives. To use them, I had to convert the LHA file into ADF disk images. I know there are already existing tools for this, but I saw it as the perfect opportunity to write some Rust code!
Setup
git clone https://codeberg.org/null_dev/amiga-disk-file.git
cd amiga-disk-file
cargo install --path ./packages/nd-adf-tools
Usage
Get help
nd-adf-tools --help
nd-adf-tools <COMMAND> --help
Create a disk
nd-adf-tools create --floppy-disk-drive dd disk.adf
Format a disk
nd-adf-tools format disk.adf FD1
Get info about the disk
nd-adf-tools info disk.adf
Volume name: FD1
Volume type: OFS, INTL-OFF, CACHE-OFF
Volume alteration date: Sun, 29 Mar 2026 15:33:44 +0000
Root creation date: Sun, 29 Mar 2026 15:33:44 +0000
Root alteration date: Sun, 29 Mar 2026 15:33:44 +0000
Total: 1760 901120
Used: 4 2048 0.23%
Free: 1756 899072 99.77%
Create some directories
nd-adf-tools mkdir disk.adf foo
nd-adf-tools mkdir -p disk.adf bar/gee
Add a file
nd-adf-tools write disk.adf ./nd-adf-tools.nfo bar/gee/nd-adf-tools.nfo
List files
nd-adf-tools ls -lr disk.adf
/:
d rwed-------- - 2026-03-29T17:35:48+02:00 foo
d rwed-------- - 2026-03-29T17:36:45+02:00 bar
/foo:
/bar:
d rwed-------- - 2026-03-29T22:11:24+02:00 gee
/bar/gee:
rwed-------- 1290 2026-03-29T22:14:29+02:00 nulldev.nfo
Read file
nd-adf-tools read disk.adf bar/gee/nulldev.nfo nulldev.nfo
Print file
nd-adf-tools cat disk.adf bar/gee/nulldev.nfo
██████ █████ ████ ████ ██████████
░░██████ ░░███ ░░███ ░░███ ░░███░░░░███
░███░███ ░███ █████ ████ ░███ ░███ ░███ ░░███ ██████ █████ █████
░███░░███░███ ░░███ ░███ ░███ ░███ ░███ ░███ ███░░███░░███ ░░███
░███ ░░██████ ░███ ░███ ░███ ░███ ░███ ░███░███████ ░███ ░███
░███ ░░█████ ░███ ░███ ░███ ░███ ░███ ███ ░███░░░ ░░███ ███
█████ ░░█████ ░░████████ █████ █████ ██████████ ░░██████ ░░█████
░░░░░ ░░░░░ ░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░░ ░░░░░
Remove file
nd-adf-tools remove disk.adf bar/gee/nulldev.nfo
Remove directories
nd-adf-tools remove -rf disk.adf bar
Credits
- Shout out to Laurent Clévy for the Amiga Disk File format FAQ.
- I generated the ASCII NullDev logo with the ASCII Art tools.