-
Notifications
You must be signed in to change notification settings - Fork 0
/
FormatDiskIBM.h
66 lines (52 loc) · 1.36 KB
/
FormatDiskIBM.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
///////////////////////////////////////////////////////////
//
// SuperDiskIndex
//
////////////////////
//
//
//
#pragma once
#include "Format.h"
#include "Buffer.h"
enum _FatType
{
FAT12,
FAT16,
FAT32,
};
class FormatDiskIBM : public Format
{
public:
FormatDiskIBM();
virtual ~FormatDiskIBM() {}
virtual char const *GetName();
// called from BitStream
virtual u8 GetSyncWordCount();
virtual u32 GetSyncWord(int n);
virtual u32 GetSyncBlockLen(int n);
virtual bool UsesGCR() { return false; }
virtual u16 GetMaxExpectedCylinder() { return 81; }
virtual u16 GetMaxExpectedHead() { return 1; }
virtual u16 GetMaxExpectedSector() { return 24; }
virtual bool UsesVariableTrackLen() { return false; }
//virtual bool Detect();
virtual void PreTrackInit();
virtual void HandleBlock(Buffer *buffer, int currev);
virtual bool Analyze();
virtual char const *GetDiskTypeString();
virtual char const *GetDiskSubTypeString();
protected:
void ParseDirectory(int fd, u32 block, u32 blkcount, char const *prefix, u32 *bad_sector_count);
void ScanFile(u32 first_cluster, const char *fn, u32 *bad_sector_count);
u32 cluster2sector(u32 cls);
u32 clustersize();
u32 GetFATChainNext(u32 cluster);
void DetectFAT();
enum _FatType FatType;
u32 ClusterCount;
char const *FatTypeName(_FatType fattype);
int cur_c,cur_h,cur_s;
//bool LayoutLocked;
class DiskMap *DMap;
};