2 using System.Collections.Generic;
4 using System.Runtime.InteropServices;
6 using System.Threading.Tasks;
10 public enum MediaType : uint { Unknown, Floppy_Disk };
28 Unknown, Amiga, Atari_ST, PC, Amstrad_CPC, Spectrum, Sam_Coupe, Archimedes, C64, Atari_8bit
33 Unknown, Noise, Auto, Copylock_Amiga, Copylock_Amiga_New, Copylock_ST, Speedlock_Amiga,
34 Speedlock_Amiga_Old, Adam_Brierley_Amiga, Adam_Brierley_Key_Amiga
68 public enum DataType : uint { Unknown, Sync, Data, IGap, Raw, Fuzzy }
71 public enum GapType : uint { Unknown, Forward, Backward }
80 public char[]
type =
new char[4];
91 return String.Format(
"Record={0} Size={1} CRC={2:X8}",
92 new string(type), length, crc);
169 string date = String.Format(
"{0:D2}/{1:D2}/{2:D2}", creationDate / 10000, (creationDate/100) % 100, creationDate % 100);
170 string time = String.Format(
"{0:D2}:{1:D2}:{2:D2}.{3:D3}", creationTime/10000000, (creationTime/100000) % 100,
171 (creationTime/1000)%100, creationTime % 1000);
172 string pstring = null;
174 if (p != 0) pstring += (p.ToString() +
" ");
176 return String.Format(
177 " Type={0} Encoder={1}(V{2}) File={3}(V{4}) Disk={5} Origin={6:X8} Creator={7:X8}\n" +
178 " Track={8:D2}-{9:D2} Side={10}-{11} Date={12} Time={13} Platforms={14}\n",
192 public uint trackBytes;
193 public uint startBytePos;
194 public uint startBitPos;
195 public uint dataBits;
197 public uint trackBits;
198 public uint blockCount;
208 return String.Format(
209 " T{0:D2}.{1} Size={2} bytes ({3} bits = Data={4} + Gap={5}) Start Byte={6} Bit={7}\n" +
210 " DataKey={8:D3} Block={9} Density={10} Signal={11} Encoder={12} Flags={13}\n",
211 track, side, trackBytes, trackBits, dataBits, gapBits, startBytePos, startBitPos,
212 dataKey, blockCount, density.ToString(), signalType.ToString(), encoder, trackFlags.ToString());
225 public override string ToString() {
226 return String.Format(
"== DataKey={0:D3} Length={1} bytes bitSize={2} bits CRC={3:X8}",
227 key, length, bitSize, crc);
236 [StructLayout(LayoutKind.Explicit)]
239 public uint dataBits;
244 public uint dataBytes;
246 public uint gapBytes;
249 public uint gapOffset;
258 public uint gapDefaultValue;
260 public uint dataOffset;
265 public uint releaseCrc;
266 public uint analyzerRev;
267 public uint[] reserved =
new uint[14];
268 public override string ToString() {
269 return String.Format(
" Associated IPF CRC={0:X8} Analyzer revision={1}\n",
270 releaseCrc, analyzerRev);
279 public uint formatId;
281 public uint trackSize;
282 public uint[] reserved =
new uint[2];
283 public override string ToString() {
284 return String.Format(
" T{0:D2}.{1} Density={2} Format={3} Fix={4} TrackSize={5}\n",
285 track, side, density.ToString(), formatId, fix, trackSize);
uint diskNumber
Number of the disk in a multi-disc release otherwise 0
uint creatorId
A unique user ID of the disk image creator
BlockFlags
Flags for a block descriptor
override string ToString()
Override ToString() to display Image record content
uint fileRev
Revision of the file.
uint creationTime
The image creation time: Specify the hour, the minute, the second, and the tick
DataType
Type of Data in data element
uint origin
Reference to original source
EncoderType
Image encoder Type
MediaType
Type of media imaged
uint[] reserved
reserved for future
uint[] reserved
reserved for future
uint creationDate
The image creation date: Specify the year, the month, the day
GapType
Type of a gap element
MediaType mediaType
Type of media imaged
Platform
Platform on which the image can be run
The image record definition
uint minTrack
The first track number of the floppy image.
uint encoderRev
Image encoder revision
SignalType
Signal Processing Type
Block descriptor definition
uint minSide
The lowest head (side) number of the floppy image.
uint maxTrack
The last track number of the floppy image.
GapElemType
Type of information in a gap element
uint fileKey
Each IPF file has a unique ID that can be used as a unique key for database
The info record definition
The Data record definition
Density
The cell density for this track
EncoderType encoderType
image encoder type
TrackFlags
Flags for the track
BlockEncoderType
Block Encoder Type
override string ToString()
Override ToString() to display info record content
Platform[] platforms
Array of four possible platforms
uint maxSide
The highest head (side) number of the floppy image. Usually 1