28 using System.Collections.Generic;
32 using System.Threading.Tasks;
34 using System.Windows.Controls;
36 using System.Windows.Documents;
37 using System.Windows.Input;
38 using System.Windows.Media;
39 using System.Windows.Media.Imaging;
40 using System.Windows.Shapes;
52 InitializeComponent();
63 displayBuffer.FontFamily =
new FontFamily(
"Consolas");
64 displayBuffer.FontSize = 16;
65 displayBuffer.FontStyle = FontStyles.Normal;
66 displayBuffer.FontWeight = FontWeights.Normal;
70 displayBuffer.AppendText(String.Format(
"Track {0:D2}.{1} has {2} sectors\n", track, side, t.
sectorCount));
72 displayBuffer.AppendText(String.Format(
"Sector {0}", t.
sectors[sect].
id.
number));
73 displayBuffer.AppendText(String.Format(
" T={0} H={1} N={2} S={3} CRC={4:X4}",
77 displayBuffer.AppendText(String.Format(
" has {0} bytes\n", t.
sectors[sect].
sectorData.Count()));
80 "Good CRC" :
"Bad CRC", (t.
sectors[sect].
fuzzyData != null) ?
"Has Fuzzy bytes" :
""));
83 displayBuffer.AppendText(String.Format(
"\nFuzzy bytes for sector {0}\n", t.
sectors[sect].
fuzzyData.Count()));
87 displayBuffer.AppendText(String.Format(
"\nTiming values for sector {0}\n", t.
sectors[sect].
timmingData.Count()));
96 displayBuffer.AppendText(
" *** Sector has no data ***\n");
97 displayBuffer.AppendText(
"\n");
111 if (floppy == null)
return;
113 displayBuffer.FontFamily =
new FontFamily(
"Consolas");
114 displayBuffer.FontSize = 16;
115 displayBuffer.FontStyle = FontStyles.Normal;
116 displayBuffer.FontWeight = FontWeights.Normal;
118 displayBuffer.AppendText(String.Format(
"Track {0:D2}.{1} {2} bytes with {3} sectors\n",
123 displayBuffer.AppendText(
"Track has no Track Image Data Record");
131 public void drawBuffer(byte[] buffer,
string message = null) {
132 displayBuffer.FontFamily =
new FontFamily(
"Consolas");
133 displayBuffer.FontSize = 16;
134 displayBuffer.FontStyle = FontStyles.Normal;
135 displayBuffer.FontWeight = FontWeights.Normal;
137 displayBuffer.AppendText(message);
139 for (
int i = 0; i < buffer.Count(); i += 16) {
140 displayBuffer.AppendText(String.Format(
"{0:D5} ", i));
143 for (
int j = 0; j < 16; j++) {
144 if ((i + j) < buffer.Count()) {
145 displayBuffer.AppendText(String.Format(
"{0:X2} ", buffer[i + j]));
146 char ch = Convert.ToChar(buffer[i + j]);
147 ascii += Char.IsControl(ch) ?
"." : ch.ToString();
150 displayBuffer.AppendText(String.Format(
" "));
152 displayBuffer.AppendText(ascii);
153 displayBuffer.AppendText(String.Format(
"\n"));
Track[,] tracks
Array of Tracks
ushort crc
CRC Value from address field
BufferWindow()
Create a new BufferWindow object.
byte track
Track number from address field
uint sectorCount
Number of sectors for this track
ushort bitPosition
position in the track of the sector address field in bits
byte size
Size value from address field
byte[] trackData
buffer for the track data if necessary
Contains information about one Track
void displaySectorBuffer(Floppy floppy, int track, int side)
Draw the content of the buffer
Interaction logic for TrackBuffer.xaml
Contains information about a complete Floppy disk
IDField id
Address field content
const byte CRC_ERR
CRC Error (in Data if RNF=0 else in ID)
Pasti File Sector Descriptor
byte number
Sector number from address field
uint byteCount
Number of bytes in the track
Sector[] sectors
Array of Sectors
byte[] sectorData
buffer for the sector data
void displayTrackBuffer(Floppy floppy, int track, int side)
Display the content of the Track Information in a textbox
ushort[] timmingData
buffer for timing bytes if necessary
void drawBuffer(byte[] buffer, string message=null)
Display the content of TrackBuffer buffer in the displayBuffer TextBox
byte side
Head number from address field
byte[] fuzzyData
buffer for fuzzy mask bytes if necessary
byte fdcFlags
Status returned by the FDC