FrOSt-Foundation / cFrOSt

FrOSt, but in C
4 stars 0 forks source link

Filesystem Proposal: bfs512/BBFS #32

Open interfect opened 7 years ago

interfect commented 7 years ago

Hello,

Seeing as how F-FAT16 hasn't been re-implemented yet, I was wondering if I could prevail upon y'all to implement bfs512, the filesystem used in @blecki's DCPUB language library, in addition or instead. It's a fairly simple system that I like a lot; there's a free bitmap for finding free sectors and basically an array of next-sector pointers that let you trace out the sectors a file uses by jumping from one to the next. Files are defined by their start sector number, and directories are just files listing names and start sector numbers. There's a provision for a Tech Compliant-style boot sector, and I have a bootloader that can load a file that could be reused or cribbed off of. There are also some reserved words left over in the header layout if things like volume labels or serial numbers are desired.

It's pretty easy to implement because there's no messing around with ranges and things, and there's already code in B, bleki's C-like language, that could maybe be cribbed off of. I also have a nice diagram in my assembly implementation (where I call the same system BBFS for historical/laziness reasons).

I think it would be best if people can share a filesystem between projects, and this one is nice, kinda documented, and already has two implementations (Blecki's and mine) that are supposed to be interoperable.

If you don't want to support it, could I at least prevail upon you to do a writeup of how F-FAT16 lays out its disks?

Yamakaky commented 7 years ago

Of course, make a PR! We would be happy to integrate it! It's always better to support multiple filesystems. Let's start the game with standards from the beginning ;)

L3nn0x commented 7 years ago

Because we plan on using modules, i'd be very easy to implement a new file system or a new driver. We don't have the specs yet but it's planned. So yeah, implementing BBFS is a really good idea ;)