That FAT12 implementation is very naive and unoptimized. You can see in this video that it takes about 7 seconds to copy a ~10 kB file: https://movq.de/v/fbf2b90ce1/los86-fat12-copy.mp4 🥴 I kind of like that, though, because it feels a little bit like an old machine. 😅🤪
(This issues a lot of BIOS calls, that’s why it’s so slow.)
@movq@www.uninformativ.de Ahh (sorry ignore my previous Twt); Any way to optimize the no. of BIOS calls? 🤔
@prologic@twtxt.net Lots, I guess. 😅 The kernel keeps almost no state between syscalls, so when you want to read the next byte from a file, it has to do all the work from scratch: Locate the file in the directory and traverse the cluster chain until you’ve reached the next byte. It’s easier to code this way, but obviously much slower. And the userspace program cp
could read/write in multiples of 512 – it currently does not do that, intentionally, because if everything is a multiple of 512, you’re less likely to discover bugs. 😅
@movq@www.uninformativ.de Ahh so you lack some kind of an open()
syscall to hold some state for the open file, i.e: a “file descriptor”? 🤔
@prologic@twtxt.net Something along those lines, yeah. And/or some generic cache for disk sectors.
@movq@www.uninformativ.de Yeah I have to admit I don’t know nearly enough about how the Linux Kernel works™ much here. I’m quite sure there’s a lot under the covers that we just don’t really fully appreciate 🤣
@prologic@twtxt.net Indeed, I’ve gained a lot more respect for Linux/BSD and DOS. 😃