Initial import from FreeBSD RELENG_4:
[games.git] / sys / platform / pc32 / include / pc / msdos.h
1 /*
2  * msdos common header file
3  * [obtained from mtools -wfj]
4  * how to decipher DOS disk structures in coexisting with DOS
5  *
6  * $FreeBSD: src/sys/i386/include/pc/msdos.h,v 1.5 1999/08/28 00:44:34 peter Exp $
7  */
8
9 #define MSECTOR_SIZE    512             /* MSDOS sector size in bytes */
10 #define MDIR_SIZE       32              /* MSDOS directory size in bytes */
11 #define MAX_CLUSTER     8192            /* largest cluster size */
12 #define MAX_PATH        128             /* largest MSDOS path length */
13 #define MAX_DIR_SECS    64              /* largest directory (in sectors) */
14
15 #define NEW             1
16 #define OLD             0
17
18 struct directory {
19         unsigned char name[8];          /* file name */
20         unsigned char ext[3];           /* file extension */
21         unsigned char attr;             /* attribute byte */
22         unsigned char reserved[10];     /* ?? */
23         unsigned char time[2];          /* time stamp */
24         unsigned char date[2];          /* date stamp */
25         unsigned char start[2];         /* starting cluster number */
26         unsigned char size[4];          /* size of the file */
27 };
28
29 struct bootsector {
30         unsigned char jump[3];          /* Jump to boot code */
31         unsigned char banner[8];        /* OEM name & version */
32         unsigned char secsiz[2];        /* Bytes per sector hopefully 512 */
33         unsigned char clsiz;            /* Cluster size in sectors */
34         unsigned char nrsvsect[2];      /* Number of reserved (boot) sectors */
35         unsigned char nfat;             /* Number of FAT tables hopefully 2 */
36         unsigned char dirents[2];       /* Number of directory slots */
37         unsigned char psect[2];         /* Total sectors on disk */
38         unsigned char descr;            /* Media descriptor=first byte of FAT */
39         unsigned char fatlen[2];        /* Sectors in FAT */
40         unsigned char nsect[2];         /* Sectors/track */
41         unsigned char nheads[2];        /* Heads */
42         unsigned char nhs[4];           /* number of hidden sectors */
43         unsigned char bigsect[4];       /* big total sectors */
44         unsigned char junk[476];        /* who cares? */
45 };
46
47 /* DOS partition table -- located in boot block */
48
49 #define DOSBBSECTOR     0       /* DOS boot block relative sector number */
50 #define DOSPARTOFF      446
51 #define NDOSPART        4
52
53 struct dos_partition {
54         unsigned char   dp_flag;        /* bootstrap flags */
55         unsigned char   dp_shd;         /* starting head */
56         unsigned char   dp_ssect;       /* starting sector */
57         unsigned char   dp_scyl;        /* starting cylinder */
58         unsigned char   dp_typ;         /* partition type */
59 #define         DOSPTYP_386BSD  0xa5            /* 386BSD partition type */
60         unsigned char   dp_ehd;         /* end head */
61         unsigned char   dp_esect;       /* end sector */
62         unsigned char   dp_ecyl;        /* end cylinder */
63         unsigned long   dp_start;       /* absolute starting sector number */
64         unsigned long   dp_size;        /* partition size in sectors */
65 } dos_partitions[NDOSPART];