clang-format -i *.cc *.c *.h

This commit is contained in:
2025-09-29 18:54:48 +02:00
parent f3057e92be
commit f1b2902640
8 changed files with 194 additions and 249 deletions

38
fat12.c
View File

@@ -6,8 +6,7 @@
#define kHeads 2
#define kFatSizeSectors 2
#define kRootDirSizeSectors 7
#define kDataRegionStartSector (1 + kFatSizeSectors*2 + kRootDirSizeSectors)
#define kDataRegionStartSector (1 + kFatSizeSectors * 2 + kRootDirSizeSectors)
typedef struct {
char name[8];
@@ -24,22 +23,22 @@ static uint8_t* gFat;
static direntry* gRootdir;
static int readsector(int c, int h, int s, uint8_t* addr) {
register uint8_t* dest asm ("bx") = addr;
register uint8_t nsects asm ("al") = 1;
register uint8_t func asm ("ah") = 0x02;
register uint8_t sect asm ("cl") = s;
register uint8_t cyl asm ("ch") = c;
register uint8_t head asm ("dh") = h;
register uint8_t drive asm ("dl") = 0;
register uint16_t seg asm ("es") = 0;
register uint8_t* dest asm("bx") = addr;
register uint8_t nsects asm("al") = 1;
register uint8_t func asm("ah") = 0x02;
register uint8_t sect asm("cl") = s;
register uint8_t cyl asm("ch") = c;
register uint8_t head asm("dh") = h;
register uint8_t drive asm("dl") = 0;
register uint16_t seg asm("es") = 0;
register uint8_t ret asm("ah");
for (int i = 0; i < 3; i++) {
asm volatile ("int $0x13"
: "=r" (ret)
: "r" (dest), "r" (nsects), "r" (func), "r" (sect),
"r" (cyl), "r" (head), "r" (drive), "r" (seg));
asm volatile("int $0x13"
: "=r"(ret)
: "r"(dest), "r"(nsects), "r"(func), "r"(sect), "r"(cyl),
"r"(head), "r"(drive), "r"(seg));
if (ret != 0x80) {
break;
}
@@ -52,20 +51,21 @@ static int readcluster(int cluster) {
int offs = cluster * 3 / 2;
if (cluster % 2) {
// high nibble is lsb + whole byte
return ((gFat[offs] & 0xf0) >> 4) + (gFat[offs+1] << 4);
return ((gFat[offs] & 0xf0) >> 4) + (gFat[offs + 1] << 4);
} else {
return gFat[offs] + ((gFat[offs+1] & 0x0f) << 8);
return gFat[offs] + ((gFat[offs + 1] & 0x0f) << 8);
}
}
static void cluster2chs(int cluster, int* c, int* h, int* s) {
int logicalsector = kDataRegionStartSector + (cluster - 2) * kSectorsPerCluster;
int logicalsector =
kDataRegionStartSector + (cluster - 2) * kSectorsPerCluster;
*s = (logicalsector % kSectorsPerTrack) + 1;
*h = (logicalsector / kSectorsPerTrack) % kHeads;
*c = logicalsector / (kHeads * kSectorsPerTrack);
}
static int strncmp(const char* s1, const char *s2, size_t len) {
static int strncmp(const char* s1, const char* s2, size_t len) {
for (int i = 0; i < len && s1[i]; i++) {
if (s1[i] != s2[i]) {
return 1;
@@ -77,7 +77,7 @@ static int strncmp(const char* s1, const char *s2, size_t len) {
static int loadfile(direntry* entry, void* addr) {
int cluster = entry->cluster;
for (int i = 0; i < entry->size; i+=1024) {
for (int i = 0; i < entry->size; i += 1024) {
int c, h, s;
cluster2chs(cluster, &c, &h, &s);
if (readsector(c, h, s, addr + i)) {