Our freeldr.sys file became somewhat large and doesn't fit in current memory layout used in fat.bin VBR.
FAT16 boot sequence looks like this: MBR -> VBR/BPB (fat.bin) -> code at first 512 bytes of freeldr.sys (which is jumped over in other VBRs) -> main freeldr.sys code
And here we have an issue with that "second part" of VBR code: it loads whole FAT into memory at 7000:0000 which leaves us 395264 bytes for freeldr.sys (we load it at 0000:F800). Currently freeldr.sys file can be 366592 bytes (gcc-built) or 448512 bytes (msvc-built). Obviously, msvc-compiled version doesn't fit into space and thus boot is being failed.
Possible solution - do not load whole FAT into memory and only read it from disk where we need. But this would affect floppy-disk performance, which should be addressed somehow