Pissing about with TZX support

This commit is contained in:
2026-05-01 20:02:18 +01:00
parent 8efcf00286
commit b1e7210e95
7 changed files with 277 additions and 23 deletions

View File

@@ -51,5 +51,65 @@ namespace Core.Io
public int DataLength { get; set; }
public byte[] Data { get; set; } = Array.Empty<byte>();
// ID 0x30: Text Description
public class TextDescriptionBlock : TzxBlock
{
public override int BlockId => 0x30;
public string Description { get; set; } = string.Empty;
}
// ID 0x20: Pause / Stop the Tape
public class PauseBlock : TzxBlock
{
public override int BlockId => 0x20;
public ushort PauseDurationMs { get; set; } // 0 means "Stop the tape"
}
// ID 0x21: Group Start (Used to group blocks in UI tape browsers)
public class GroupStartBlock : TzxBlock
{
public override int BlockId => 0x21;
public string GroupName { get; set; } = string.Empty;
}
// ID 0x22: Group End
public class GroupEndBlock : TzxBlock
{
public override int BlockId => 0x22;
}
// ID 0x12: Pure Tone Block
public class PureToneBlock : TzxBlock
{
public override int BlockId => 0x12;
public ushort PulseLength { get; set; }
public ushort PulseCount { get; set; }
}
// ID 0x13: Pulse Sequence Block
public class PulseSequenceBlock : TzxBlock
{
public override int BlockId => 0x13;
// Number of pulses (1 to 255)
public int PulseCount { get; set; }
// The exact T-State lengths of each pulse
public ushort[] Pulses { get; set; } = Array.Empty<ushort>();
}
// ID 0x14: Pure Data Block
public class PureDataBlock : TzxBlock
{
public override int BlockId => 0x14;
public ushort ZeroBitPulseLength { get; set; }
public ushort OneBitPulseLength { get; set; }
public byte UsedBitsInLastByte { get; set; }
public ushort PauseAfterMs { get; set; }
// The return of the 24-bit integer!
public int DataLength { get; set; }
public byte[] Data { get; set; } = Array.Empty<byte>();
}
}
}