VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
FSTypes.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
13
14#pragma once
15
16#include "Reflection.h"
17#include "DriveTypes.h"
18
19namespace vc64 {
20
21//
22// Enumerations
23//
24
31typedef DOS_TYPE DOSType;
32
33struct DOSTypeEnum : util::Reflection<DOSTypeEnum, DOSType> {
34
35 static constexpr long minVal = 0;
36 static constexpr long maxVal = DOS_TYPE_CBM;
37 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
38
39 static const char *prefix() { return "DOS_TYPE"; }
40 static const char *key(long value)
41 {
42 switch (value) {
43
44 case DOS_TYPE_NODOS: return "NODOS";
45 case DOS_TYPE_CBM: return "CBM";
46 }
47 return "???";
48 }
49};
50
51enum_long(FS_FILETYPE)
52{
53 FS_FILETYPE_DEL,
54 FS_FILETYPE_SEQ,
55 FS_FILETYPE_PRG,
56 FS_FILETYPE_USR,
57 FS_FILETYPE_REL
58};
59typedef FS_FILETYPE FSFileType;
60
61struct FSFileTypeEnum : util::Reflection<FSFileTypeEnum, FSFileType> {
62
63 static constexpr long minVal = 0;
64 static constexpr long maxVal = FS_FILETYPE_REL;
65 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
66
67 static const char *prefix() { return "FS_FILETYPE"; }
68 static const char *key(long value)
69 {
70 switch (value) {
71
72 case FS_FILETYPE_DEL: return "DEL";
73 case FS_FILETYPE_SEQ: return "SEQ";
74 case FS_FILETYPE_PRG: return "PRG";
75 case FS_FILETYPE_USR: return "USR";
76 case FS_FILETYPE_REL: return "REL";
77 }
78 return "???";
79 }
80};
81
82enum_long(FS_BLOCKTYPE)
83{
84 FS_BLOCKTYPE_UNKNOWN,
85 FS_BLOCKTYPE_EMPTY,
86 FS_BLOCKTYPE_BAM,
87 FS_BLOCKTYPE_DIR,
88 FS_BLOCKTYPE_DATA
89};
90typedef FS_BLOCKTYPE FSBlockType;
91
92struct FSBlockTypeEnum : util::Reflection<FSBlockTypeEnum, FSBlockType> {
93
94 static constexpr long minVal = 0;
95 static constexpr long maxVal = FS_BLOCKTYPE_DATA;
96 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
97
98 static const char *prefix() { return "FS_BLOCKTYPE"; }
99 static const char *key(long value)
100 {
101 switch (value) {
102
103 case FS_BLOCKTYPE_UNKNOWN: return "UNKNOWN";
104 case FS_BLOCKTYPE_EMPTY: return "EMPTY";
105 case FS_BLOCKTYPE_BAM: return "BAM";
106 case FS_BLOCKTYPE_DIR: return "DIR";
107 case FS_BLOCKTYPE_DATA: return "DATA";
108 }
109 return "???";
110 }
111};
112
113enum_long(FS_USAGE)
114{
115 FS_USAGE_UNKNOWN,
116 FS_USAGE_UNUSED,
117 FS_USAGE_DOS_VERSION,
118 FS_USAGE_DOS_TYPE,
119 FS_USAGE_ALLOCATION_BITS,
120 FS_USAGE_DISK_ID,
121 FS_USAGE_DISK_NAME,
122 FS_USAGE_TRACK_LINK,
123 FS_USAGE_SECTOR_LINK,
124 FS_USAGE_FIRST_FILE_TRACK,
125 FS_USAGE_FIRST_FILE_SECTOR,
126 FS_USAGE_FIRST_REL_TRACK,
127 FS_USAGE_FIRST_REL_SECTOR,
128 FS_USAGE_FIRST_DIR_TRACK,
129 FS_USAGE_FIRST_DIR_SECTOR,
130 FS_USAGE_FILE_TYPE,
131 FS_USAGE_FILE_NAME,
132 FS_USAGE_FILE_LENGTH_LO,
133 FS_USAGE_FILE_LENGTH_HI,
134 FS_USAGE_REL_RECORD_LENGTH,
135 FS_USAGE_GEOS,
136 FS_USAGE_DATA
137};
138typedef FS_USAGE FSUsage;
139
140struct FSUsageEnum : util::Reflection<FSUsageEnum, FSUsage> {
141
142 static constexpr long minVal = 0;
143 static constexpr long maxVal = FS_USAGE_DATA;
144 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
145
146 static const char *prefix() { return "FS_USAGE"; }
147 static const char *key(long value) { return "???"; }
148};
149
150//
151// Structures
152//
153
154typedef struct
155{
156 Track t;
157 Sector s;
158}
159TSLink;
160
161typedef struct
162{
163 long bitmapErrors;
164 long corruptedBlocks;
165 long firstErrorBlock;
166 long lastErrorBlock;
167}
168FSErrorReport;
169
170}
VirtualC64 project namespace.
Definition CmdQueue.cpp:16
DOS_TYPE
File system type.
Definition FSTypes.h:27
@ DOS_TYPE_CBM
C64 CBM file system.
Definition FSTypes.h:29
@ DOS_TYPE_NODOS
No file system.
Definition FSTypes.h:28