47 lines
1 KiB
Plaintext
47 lines
1 KiB
Plaintext
|
stn := @use("../../../libraries/stn/src/lib.hb");
|
||
|
.{string, memory, buffer, log} := stn
|
||
|
|
||
|
attributes := @use("rel:attributes.hb")
|
||
|
datetime := @use("rel:datetime.hb")
|
||
|
directory := @use("rel:file.hb")
|
||
|
bios_parameter_block := @use("rel:bios_parameter_block.hb");
|
||
|
.{bpb_sanity_check, ebr_sanity_check, fs_info_sanity_check} := bios_parameter_block;
|
||
|
.{new_bpb, new_ebr, new_fs_info} := bios_parameter_block
|
||
|
|
||
|
FAT12_THRESHOLD := 4085
|
||
|
FAT16_THRESHOLD := 65525
|
||
|
|
||
|
ExFAT := 0
|
||
|
FAT12 := 1
|
||
|
FAT16 := 2
|
||
|
FAT32 := 3
|
||
|
|
||
|
calculate_fat_type := fn(sector_size: int, total_clusters: int): int {
|
||
|
if sector_size == 0 {
|
||
|
return ExFAT
|
||
|
} else if total_clusters < 4085 {
|
||
|
return FAT12
|
||
|
} else if total_clusters < 65525 {
|
||
|
return FAT16
|
||
|
} else {
|
||
|
return FAT32
|
||
|
}
|
||
|
}
|
||
|
|
||
|
main := fn(): int {
|
||
|
bpb := new_bpb()
|
||
|
ebr := new_ebr()
|
||
|
fsi := new_fs_info()
|
||
|
|
||
|
fat_type := calculate_fat_type(1, 100)
|
||
|
|
||
|
if fat_type != FAT32 {
|
||
|
log.warn("filesystem_fat32 driver only supports Fat32.\0")
|
||
|
}
|
||
|
|
||
|
bpb_sanity_check(bpb)
|
||
|
ebr_sanity_check(ebr)
|
||
|
fs_info_sanity_check(fsi)
|
||
|
|
||
|
return 0
|
||
|
}
|