Skip to content

Commit b103a6b

Browse files
committed
Added preliminary support for IBM's XDF format
1 parent 9ac43ce commit b103a6b

File tree

5 files changed

+35
-11
lines changed

5 files changed

+35
-11
lines changed

DiskImageTool/DiskImage/BiosParameterBlock.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Namespace DiskImage
77
Public Shared ReadOnly ValidNumberOfFATS() As Byte = {1, 2}
88
Public Shared ReadOnly ValidNumberOfHeads() As UShort = {1, 2}
99
Public Shared ReadOnly ValidSectorsPerCluster() As Byte = {1, 2, 4, 8, 16, 32, 64, 128}
10-
Public Shared ReadOnly ValidSectorsPerTrack() As UShort = {8, 9, 15, 18, 21, 36}
10+
Public Shared ReadOnly ValidSectorsPerTrack() As UShort = {8, 9, 15, 18, 21, 23, 36}
1111
Private ReadOnly _FileBytes As ImageByteArray
1212

1313
Public Enum BPBOoffsets As UInteger

DiskImageTool/DiskImage/FloppyDiskFunctions.vb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
FloppyDMF1024 = 9
1414
FloppyDMF2048 = 10
1515
FloppyProCopy = 11
16+
FloppyXDF = 12
1617
End Enum
1718

1819
Public Function BPBCompare(BPB As BiosParameterBlock, Params As FloppyDiskParams) As Boolean
@@ -196,6 +197,18 @@
196197
Params.SectorsPerCluster = 2
197198
Params.SectorsPerFAT = 5
198199
Params.SectorsPerTrack = 18
200+
201+
Case FloppyDiskType.FloppyXDF
202+
Params.BytesPerSector = 512
203+
Params.MediaDescriptor = &HF0
204+
Params.NumberOfFATs = 2
205+
Params.NumberOfHeads = 2
206+
Params.ReservedSectorCount = 1
207+
Params.RootEntryCount = 224
208+
Params.SectorCountSmall = 3680
209+
Params.SectorsPerCluster = 1
210+
Params.SectorsPerFAT = 11
211+
Params.SectorsPerTrack = 23
199212
End Select
200213

201214
Return Params
@@ -253,6 +266,8 @@
253266
Return FloppyDiskType.Floppy1440
254267
Case 1720320
255268
Return FloppyDiskType.FloppyDMF2048
269+
Case 1884160
270+
Return FloppyDiskType.FloppyXDF
256271
Case 2949120
257272
Return FloppyDiskType.Floppy2880
258273
Case Else
@@ -284,6 +299,8 @@
284299
Return "2.88M"
285300
Case FloppyDiskType.FloppyProCopy
286301
Return "ProCopy"
302+
Case FloppyDiskType.FloppyXDF
303+
Return "XDF"
287304
Case Else
288305
Return "Custom"
289306
End Select

DiskImageTool/DiskImageTool.vbproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<ProductName>DiskImageTool</ProductName>
3131
<PublisherName>Digitoxin</PublisherName>
3232
<ApplicationRevision>0</ApplicationRevision>
33-
<ApplicationVersion>1.39.0.%2a</ApplicationVersion>
33+
<ApplicationVersion>1.40.0.%2a</ApplicationVersion>
3434
<UseApplicationTrust>false</UseApplicationTrust>
3535
<PublishWizardCompleted>true</PublishWizardCompleted>
3636
<BootstrapperEnabled>true</BootstrapperEnabled>

DiskImageTool/Forms/BootSectorForm.vb

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ Public Class BootSectorForm
100100
$"{vbCrLf}1.2M Floppy{vbTab}1" &
101101
$"{vbCrLf}1.44M Floppy{vbTab}1" &
102102
$"{vbCrLf}2.88M Floppy{vbTab}2" &
103-
$"{vbCrLf}DMF Floppy{vbTab}2 or 4"
103+
$"{vbCrLf}DMF Floppy{vbTab}2 or 4" &
104+
$"{vbCrLf}XDF Floppy{vbTab}1"
104105
SetHelpString(Msg, LblSectorsPerCluster, CboSectorsPerCluster)
105106

106107
Msg = "Number of reserved sectors in the reserved region of the volume starting at the first sector of the volume" &
@@ -124,7 +125,8 @@ Public Class BootSectorForm
124125
$"{vbCrLf}1.2M Floppy{vbTab}224" &
125126
$"{vbCrLf}1.44M Floppy{vbTab}224" &
126127
$"{vbCrLf}2.88M Floppy{vbTab}240" &
127-
$"{vbCrLf}DMF Floppy{vbTab}16"
128+
$"{vbCrLf}DMF Floppy{vbTab}16" &
129+
$"{vbCrLf}XDF Floppy{vbTab}224"
128130
SetHelpString(Msg, LblRootDirectoryEntries, TxtRootDirectoryEntries)
129131

130132
Msg = "Total number of sectors in the volume" &
@@ -137,12 +139,13 @@ Public Class BootSectorForm
137139
$"{vbCrLf}1.2M Floppy{vbTab}2400" &
138140
$"{vbCrLf}1.44M Floppy{vbTab}2880" &
139141
$"{vbCrLf}2.88M Floppy{vbTab}5760" &
140-
$"{vbCrLf}DMF Floppy{vbTab}3360"
142+
$"{vbCrLf}DMF Floppy{vbTab}3360" &
143+
$"{vbCrLf}XDF Floppy{vbTab}3680"
141144
SetHelpString(Msg, LblSectorCountSmall, TxtSectorCountSmall)
142145

143146
Msg = "Media Descriptor" &
144147
$"{vbCrLf}{vbCrLf}Allowed Values:" &
145-
$"{vbCrLf}F0{vbTab}1.44M, 2.88M, DMF Floppy" &
148+
$"{vbCrLf}F0{vbTab}1.44M, 2.88M, DMF, XDF Floppy" &
146149
$"{vbCrLf}F8{vbTab}Fixed Disk" &
147150
$"{vbCrLf}F9{vbTab}720K & 1.2M Floppy" &
148151
$"{vbCrLf}FA{vbTab}Unused" &
@@ -163,7 +166,8 @@ Public Class BootSectorForm
163166
$"{vbCrLf}1.2M Floppy{vbTab}7" &
164167
$"{vbCrLf}1.44M Floppy{vbTab}9" &
165168
$"{vbCrLf}2.88M Floppy{vbTab}9" &
166-
$"{vbCrLf}DMF Floppy{vbTab}3 or 5"
169+
$"{vbCrLf}DMF Floppy{vbTab}3 or 5" &
170+
$"{vbCrLf}XDF Floppy{vbTab}11"
167171
SetHelpString(Msg, LblSectorsPerFAT, TxtSectorsPerFAT)
168172

169173
Msg = "Number of sectors per track on the disk" &
@@ -176,7 +180,8 @@ Public Class BootSectorForm
176180
$"{vbCrLf}1.2M Floppy{vbTab}15" &
177181
$"{vbCrLf}1.44M Floppy{vbTab}18" &
178182
$"{vbCrLf}2.88M Floppy{vbTab}36" &
179-
$"{vbCrLf}DMF Floppy{vbTab}21"
183+
$"{vbCrLf}DMF Floppy{vbTab}21" &
184+
$"{vbCrLf}XDF Floppy{vbTab}23"
180185
SetHelpString(Msg, LblSectorsPerTrack, TxtSectorsPerTrack)
181186

182187
Msg = "Number of physical heads (sides) on the disk" &
@@ -189,7 +194,8 @@ Public Class BootSectorForm
189194
$"{vbCrLf}1.2M Floppy{vbTab}2" &
190195
$"{vbCrLf}1.44M Floppy{vbTab}2" &
191196
$"{vbCrLf}2.88M Floppy{vbTab}2" &
192-
$"{vbCrLf}DMF Floppy{vbTab}2"
197+
$"{vbCrLf}DMF Floppy{vbTab}2" &
198+
$"{vbCrLf}XDF Floppy{vbTab}2"
193199
SetHelpString(Msg, LblNumberOfHeads, TxtNumberOfHeads)
194200

195201
Msg = "Number of sectors preceeding the first sector of a partitioned volume" &
@@ -322,7 +328,7 @@ Public Class BootSectorForm
322328
SetValue(TxtSectorCountSmall, BPB.SectorCountSmall)
323329
SetValue(HexMediaDescriptor, BPB.MediaDescriptor.ToString("X2"), Array.ConvertAll(BiosParameterBlock.ValidMediaDescriptor, Function(x) x.ToString("X2")))
324330
SetValue(TxtSectorsPerFAT, BPB.SectorsPerFAT)
325-
SetValue(TxtSectorsPerTrack, BPB.SectorsPerTrack, {"8", "9", "15", "18", "21", "36"})
331+
SetValue(TxtSectorsPerTrack, BPB.SectorsPerTrack, {"8", "9", "15", "18", "21", "23", "36"})
326332
SetValue(TxtNumberOfHeads, BPB.NumberOfHeads, {"1", "2"})
327333
End Sub
328334

@@ -345,6 +351,7 @@ Public Class BootSectorForm
345351
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.Floppy2880))
346352
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.FloppyDMF1024))
347353
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.FloppyDMF2048))
354+
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.FloppyXDF))
348355
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.FloppyProCopy))
349356
CboDiskType.Items.Add(New BootSectorDiskType(FloppyDiskType.FloppyUnknown))
350357

DiskImageTool/My Project/AssemblyInfo.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ Imports System.Runtime.InteropServices
3131
' <Assembly: AssemblyVersion("1.0.*")>
3232

3333
<Assembly: AssemblyVersion("1.0.0.0")>
34-
<Assembly: AssemblyFileVersion("1.39.0.0")>
34+
<Assembly: AssemblyFileVersion("1.40.0.0")>

0 commit comments

Comments
 (0)