NTFS is the closest you can get, and it's read-only on Mac OS.
It's what my steamdeck is formatted to so I could plop the drive into windows and rip steamapps across to shortcut a lot of downloading.
NTFS is r/w with Paragon. Same with Ext4FS.
In the end, it is a matter of FUSE.
Either way, I don't think Amiga(OS) was known for its FS.
I do remember there being a r/o driver for Amiga FS back in Linux 2.2 (end of 90s?)
Doesn't tell us anything. Which product, version.
Paragon's NTFS driver is now (after open sourced) part of the Linux kernel, and this one is rw.
(My data loss with XFS was some 20 years ago with Linux 2.4.x after a power loss. I've also had RAID5 write hole ZFS data loss a couple of years later, on FreeBSD, and that was with a BBU for the hardware raid. Ever since, I learned to disable write cache, until I've seen NVMe with PLP for cache.)
Disagree, exFAT has been r/w on all 3 OSes for many years now, and it also supports files >4GB.
We shipped an appliance about 15 years ago and it had a requirement that it must be able to write large video files to USB thumb drives in a format that was read/writable from all 3 OSes, we chose exFAT and never had any complaints.
One of these things is not like the others.
In fact, that option supports the others as well as it can, despite stiff opposition from the other two.
Choose the "works as well as it can with everyone" option instead of the two options that try to keep their users trapped, at least, if you want to see increased interoperability.
I installed Windows 11 in a VM, and it mounted just fine in there.
It only feels like an unsolved problem because some OEMs benefit from the fragmentation.
But you could mount readonly and have it work both sides. Or disconnect the side not writing, then reconnected when write has finished.
Part A emulates a USB drive to Device A.
Part B emulates a USB drive to Device B.
Part C is the eventually-consistent synchronizer. It can "see" into Part A and Part B.
If file exists on A but not B, copy the file from A to B. If file exists on B but not A, copy the file from B to A.
To each device, the files magically show up.
To resolve conflicts, it would have to do it based on timestamps.
The synchronizer could be anything. Heck, it could even be rsync. This device could be 3 Raspberry Pi's crammed into a single box.
I would happily pay $100 or so for a device that could do this.
If you want a truly "automatic" solution, your magic USB device would have to pretend to be a network device to both A and B, perhaps with DHCP or ipv6 autoconfig, and export NFS and/or Samba to both ends.
It's fun to think of the alternate universe where Commodore had been competently managed, and we wouldn't have the codified mediocrity of POSIX driving everything today.
It would be hard for me to justify the time sink, but I would like to port over the most recent Firefox/IceWeasel and bring Amiga into the 21st century.
I do hope Haiku does catch on though; I heard they have a decent browser now, so there’s a shot.
It looks like it shoehorns proprietary binary blobs into Linux, but what is missing from the built-in drivers?
Just about everyone uses a flavour of PFS3 in their Amigas these days and it is a bit of a pain that we haven't been able to just mount hard disk images natively. Instead we've had to run a full Amiga emulator to transfer data to and from disk images or hard disks/memory cards, which eats into file transfer performance.
The IBM PC floppy controller, however, normally cannot: While it has a debug raw read operation, it only reads once it finds a triple sync word in the floppy; Amiga track format uses double sync words.
However, if there is another floppy drive, it is possible to start the read on the other drive, with a standard IBM PC formatted floppy in it, and then poke a register to switch to the drive with the Amiga floppy.
EvanAnderson•1d ago
Because AmigaDOS filesystem handlers are pluggable it's possible others could work, too. I wonder if you could get CrossDOS[0] working and use this to access FAT filesystems for Inception-like fun.
Edit: Oh, shit! I haven't used AmigaDOS in years, but I'm seeing NTFS-related commands in the AmigsDOS 4.0 documentation[1]. I wonder if this means there's a 68K NTFS filesystem handler this could run! That would be fun.
Edit on Edit: I am continually amazed by the forethought that went into the Amiga. I first ran into them around '92, after having grown up on Apple II, Commodore 64, and finally PCs. Pluggable file systems, data type handlers, AREXX, and the general extensibility of the ecosystem absolutely blew my mind. Plus there was still juxtaposition of games and demos that booted from disk and ran directly on the metal. It felt like it had a leg in the past and in the future. (I always wished for memory protection on the Amiga, though. It could have been so much more stable, albeit I know that in '85 the cost would have been prohibitive...)
[0] https://en.wikipedia.org/wiki/CrossDOS
[1] https://wiki.amigaos.net/wiki/AmigaOS_Manual:_AmigaDOS_Comma...
amiga386•22h ago
What's interesting is not so much the 68K emulator (though that is interesting for Python), but rather that it's using VAMOS - the most amazing thing about the amitools project.
VAMOS is a full-on pretend version of AmigaOS in Python, that hooks everything up so that e.g. dos.library's Open() actually calls Python's open(), and so on.
https://github.com/cnvogelg/amitools
Here is, for example, its fake implementation of dos.library: https://github.com/cnvogelg/amitools/blob/main/amitools/vamo...
The "libcore" code reads a .fd file (which on the Amiga is a parseable description of the API calls in a library, for generating include files and stubs), then it creates a fake library base in memory with fake jumptable entries... which jump to two instructions, an "ALINE" trap (any two bytes from 0xA000 to 0xAFFF, which trigger the 68000's ALINE trap handler, one is allocated for each library call), then RTS... That's enough to let Python take back control from the emulator when the trap arrives, and emulate the API call.
It does make me wonder how scalable VAMOS if there are no more than 4096 library calls possible.
Anyway, what concerns me about amifuse is that VAMOS has no BCPL internals. pr_GlobVec isn't filled out. AmigaDOS 1.x was written in BCPL (it's an Amiga port of TRIPOS), and AmigaDOS 2.x/3.x went to great pains to pretend BCPL internals were still there, even though they weren't. I'm sure I've seen a number of filesystem handlers that relied on BCPL internals... these just won't work in VAMOS as it stands, and therefore won't work in amifuse.
It's a little bit odd that amifuse only demonstrates working with PFS. Does it work with AFS (AmiFileSafe), SFS (SmartFileSystem)? What about FastFileSystem, CacheCDFS, CrossDOSFileSystem, MultiUserFS and so on?
For that matter, the native filesystem handler in AmigaOS 2.x/3.x was ROM resident. How would one extract it and patch it up to run outside the ROM, so that it could then be use with amifuse?
amiga386•22h ago
That's a lot of PRs from him: https://github.com/cnvogelg/amitools/pulls?q=is%3Apr+author%...
There's a lot more AmigaOS API calls and infrastructure that filesystem handlers rely on than just BCPL, e.g. I see here he added a fake input.device to make FFS happy: https://github.com/cnvogelg/amitools/pull/231/files#diff-938...
And to answer my earlier question, how does one get the filesystem handler out of ROM, the answer is amitools's "romtool" based on data taken from the Amiga ROMSplit tool.
So I guess he's working hard on beefing up VAMOS's AmigaOS emulation to get filesystem handlers working. Great stuff!
Jope9000•14h ago
The handler file is shipped on the OS install disk and it is automatically added to the RDB by HDToolBox when you initialize a new drive.
snvzz•18h ago
>CrossDOS was a combination of mfm.device (asking the disk hardware to do funky things) as well as CrossDOSFileSystem (FAT12 filesystem handler).
The "disk hardware" is a pretty dull DAC/ADC. The track format is different in Amiga and IBM PC floppies, but from the perspective of the Amiga hardware it is identical, as it does not deal with that.
The encoding/decoding is always done in software, and mfm.device just implements the IBM PC track format.
0. https://www.datagubbe.se/wbshots/
Jope9000•13h ago
mfm.device is naturally not needed or used if you aren't using floppy disk. The filesystem handler uses whatever storage driver your mass storage is connected to if the mass storage is not accessed at a low level.
Sophira•15h ago
Honestly, that seems like a surprisingly forward-thinking way to do things; preservation and archival become a lot easier if you can run the code. I've honestly not heard about this approach before, but it makes so much sense.
Can we pretty-please do this for all filesystems?
pjmlp•12h ago
Having to deal with COM/WinRT, XPC, Binder, D-Bus is much more complex.