|
|
1.1 ! root 1: typedef struct Dosboot Dosboot; ! 2: typedef struct Dos Dos; ! 3: typedef struct Dosdir Dosdir; ! 4: typedef struct Dosfile Dosfile; ! 5: typedef struct Dospart Dospart; ! 6: ! 7: struct Dospart ! 8: { ! 9: uchar flag; /* active flag */ ! 10: uchar shead; /* starting head */ ! 11: uchar scs[2]; /* starting cylinder/sector */ ! 12: uchar type; /* partition type */ ! 13: uchar ehead; /* ending head */ ! 14: uchar ecs[2]; /* ending cylinder/sector */ ! 15: uchar start[4]; /* starting sector */ ! 16: uchar len[4]; /* length in sectors */ ! 17: }; ! 18: ! 19: struct Dosboot{ ! 20: uchar magic[3]; ! 21: uchar version[8]; ! 22: uchar sectsize[2]; ! 23: uchar clustsize; ! 24: uchar nresrv[2]; ! 25: uchar nfats; ! 26: uchar rootsize[2]; ! 27: uchar volsize[2]; ! 28: uchar mediadesc; ! 29: uchar fatsize[2]; ! 30: uchar trksize[2]; ! 31: uchar nheads[2]; ! 32: uchar nhidden[4]; ! 33: uchar bigvolsize[4]; ! 34: uchar driveno; ! 35: uchar reserved0; ! 36: uchar bootsig; ! 37: uchar volid[4]; ! 38: uchar label[11]; ! 39: uchar reserved1[8]; ! 40: }; ! 41: ! 42: struct Dosfile{ ! 43: Dos *dos; /* owning dos file system */ ! 44: char name[8]; ! 45: char ext[3]; ! 46: uchar attr; ! 47: long length; ! 48: long pstart; /* physical start cluster address */ ! 49: long pcurrent; /* physical current cluster address */ ! 50: long lcurrent; /* logical current cluster address */ ! 51: long offset; ! 52: }; ! 53: ! 54: struct Dos{ ! 55: int dev; /* device id */ ! 56: long (*read)(int, void*, long); /* read routine */ ! 57: long (*seek)(int, long); /* seek routine */ ! 58: ! 59: int start; /* start of file system */ ! 60: int sectsize; /* in bytes */ ! 61: int clustsize; /* in sectors */ ! 62: int clustbytes; /* in bytes */ ! 63: int nresrv; /* sectors */ ! 64: int nfats; /* usually 2 */ ! 65: int rootsize; /* number of entries */ ! 66: int volsize; /* in sectors */ ! 67: int mediadesc; ! 68: int fatsize; /* in sectors */ ! 69: int fatclusters; ! 70: int fatbits; /* 12 or 16 */ ! 71: long fataddr; /* sector number */ ! 72: long rootaddr; ! 73: long dataaddr; ! 74: long freeptr; ! 75: ! 76: Dosfile root; ! 77: }; ! 78: ! 79: struct Dosdir{ ! 80: uchar name[8]; ! 81: uchar ext[3]; ! 82: uchar attr; ! 83: uchar reserved[10]; ! 84: uchar time[2]; ! 85: uchar date[2]; ! 86: uchar start[2]; ! 87: uchar length[4]; ! 88: }; ! 89: ! 90: #define DRONLY 0x01 ! 91: #define DHIDDEN 0x02 ! 92: #define DSYSTEM 0x04 ! 93: #define DVLABEL 0x08 ! 94: #define DDIR 0x10 ! 95: #define DARCH 0x20 ! 96: ! 97: extern int chatty; ! 98: ! 99: extern int dosboot(Dos*, char*); ! 100: extern int dosinit(Dos*); ! 101: extern long dosread(Dosfile*, void*, long); ! 102: extern int dosstat(Dos*, char*, Dosfile*); ! 103: extern int doswalk(Dosfile*, char*); ! 104: ! 105: extern int plan9ini(Dos*);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.