I didn’t totally finished floppy support but I’m pretty sure of one thing fun : JSI used an already existing lib.
They didn’t fully updated it.
They cleaned some stuff (like the BPB table) but not the format data (6 availables while 4 selectable), because code is based on 6 bytes per data
and, according the format defined, at least one is for 5 1/4 floppy.
It was not coded for SMD because a minimun file size is 512k … won’t fit on a 360k 5 1/4 floppy !
I think it also why the code is a total mess LOL
Anyway, another thing which make it hard to re-code is the fact they use the same function to write and read.
It’s a bit value which define the read or write code part of each functions.
I didn’t notice it on the first pass so I missed a lot of things !