aboutsummaryrefslogtreecommitdiff
path: root/dos/inc/mbr.h
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2026-10-26 00:50:06 +0100
committerJavier <dev.git@javispedro.com>2026-10-26 00:50:06 +0100
commit6b8a368c51082fdd010ef5e1b0be4eb9b5059d1a (patch)
treee274d41a8dd5e912e20617a937a1fda5af91f8de /dos/inc/mbr.h
parent9b1cf601360fb194047e6dcc2af75c2f38c611ec (diff)
downloadchu-6b8a368c51082fdd010ef5e1b0be4eb9b5059d1a.tar.gz
chu-6b8a368c51082fdd010ef5e1b0be4eb9b5059d1a.zip
refactor common parts into inc/ch375.h and add win9x, linux drivers
Diffstat (limited to 'dos/inc/mbr.h')
-rw-r--r--dos/inc/mbr.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/dos/inc/mbr.h b/dos/inc/mbr.h
new file mode 100644
index 0000000..d45727d
--- /dev/null
+++ b/dos/inc/mbr.h
@@ -0,0 +1,46 @@
+#ifndef MBR_H
+#define MBR_H
+
+#include "sassert.h"
+
+enum MBR_PARTTYPE
+{
+ MBR_EMPTY = 0,
+ MBR_FAT12 = 0x01,
+ MBR_FAT16_32MB = 0x04,
+ MBR_EXT = 0x05,
+ MBR_FAT16 = 0x06,
+ MBR_IFS = 0x07,
+ MBR_FAT32 = 0x0B,
+ MBR_FAT32_LBA = 0x0C,
+ MBR_FAT16_LBA = 0x0E,
+ MBR_EXT_LBA = 0x0F,
+ MBR_LINUX_SWAP = 0x82,
+ MBR_LINUX = 0x83,
+};
+
+typedef _Packed struct MBR_CHS
+{
+ uint8_t head;
+ unsigned sector : 6;
+ unsigned cyl : 10;
+} MBR_CHS;
+
+STATIC_ASSERT(sizeof(MBR_CHS) == 3);
+
+typedef _Packed struct MBR_PARTENTRY
+{
+ uint8_t status;
+ MBR_CHS chsFirst;
+ uint8_t type;
+ MBR_CHS chsLast;
+ uint32_t lbaFirst;
+ uint32_t lbaLen;
+} MBR_PARTENTRY;
+
+STATIC_ASSERT(sizeof(MBR_PARTENTRY) == 16);
+
+#define MBR_PARTENTRY_OFFSET_ON_DISK 446
+#define MBR_SIGNATURE_OFFSET_ON_DISK 510
+
+#endif // MBR_H