@@ -213,6 +213,7 @@ DiskEncoder::decodeAmigaTrack(ByteView track, TrackNr t, MutableByteView dst)
213213 // Find all sectors
214214 auto offsets = seekSectors (track);
215215
216+ /*
216217 for (isize i = 0; i < count; ++i) {
217218 if (!offsets.contains(i)) {
218219 warn("Sector %ld not found. Aborting.\n", i);
@@ -223,6 +224,7 @@ DiskEncoder::decodeAmigaTrack(ByteView track, TrackNr t, MutableByteView dst)
223224 warn("Found %zd sectors, expected %ld. Aborting.\n", offsets.size(), count);
224225 throw DeviceError(DeviceError::DSK_WRONG_SECTOR_COUNT);
225226 }
227+ */
226228
227229 // Decode all sectors
228230 for (SectorNr s = 0 ; s < count; s++) {
@@ -235,41 +237,6 @@ DiskEncoder::decodeAmigaTrack(ByteView track, TrackNr t, MutableByteView dst)
235237 auto *secData = dst.data () + s * bsize;
236238 decodeAmigaSector (track, offsets[s], span<u8 >(secData, bsize));
237239 }
238-
239- /*
240- // Find all sync marks
241- auto it = track.cyclic_begin();
242- std::vector<isize> syncMarks;
243- syncMarks.reserve(count);
244-
245- constexpr isize syncMarkLen = 4;
246- for (isize i = 0; i < track.size() + syncMarkLen; ++i, ++it) {
247-
248- // Scan MFM stream for $4489 $4489
249- if (it[0] != 0x44) continue;
250- if (it[1] != 0x89) continue;
251- if (it[2] != 0x44) continue;
252- if (it[3] != 0x89) continue;
253-
254- // Make sure it's not a DOS track
255- if (it[5] == 0x89) continue;
256-
257- syncMarks.push_back(it.offset());
258- }
259-
260- if (ADF_DEBUG) fprintf(stderr, "Found %zd sectors (expected %ld)\n", syncMarks.size(), count);
261-
262- // Check that the track contains the proper amount of sync marks
263- if (isize(syncMarks.size()) != count) {
264-
265- warn("Found %zd sectors, expected %ld. Aborting.\n", syncMarks.size(), count);
266- throw DeviceError(DeviceError::DSK_WRONG_SECTOR_COUNT);
267- }
268-
269- // Decode all sectors
270- for (SectorNr s = 0; s < count; s++)
271- decodeAmigaSector(track, syncMarks[s], dst);
272- */
273240}
274241
275242void
@@ -280,36 +247,19 @@ DiskEncoder::decodeAmigaSector(ByteView track, isize offset, MutableByteView dst
280247
281248 if (MFM_DEBUG) fprintf (stderr, " Decoding sector at offset %ld\n " , offset);
282249
283- // Skip sync mark
284- offset += 4 ;
285-
286- /*
287- // Decode sector info
288- u8 info[4]; decodeOddEven(info, &track[offset], 4);
250+ // Skip sync mark + sector header
251+ offset += 4 + 56 ;
289252
290- // Extract the sector number
291- auto secNr = SectorNr(info[2]) ;
253+ // Determine the source address
254+ auto *mfmData = &track[offset] ;
292255
293- if (MFM_DEBUG) fprintf(stderr, "Decoding sector %ld\n", secNr);
294- */
256+ for (isize i = 0 ; i < 16 ; ++i) { printf (" %0X " , mfmData[i]); } printf (" \n " );
295257
296- // Check that the sector number is valid
297- /*
298- if (secNr * bsize + bsize > dst.size()) {
299-
300- warn("Invalid sector number %ld. Aborting.\n", secNr);
301- throw DeviceError(DeviceError::DSK_INVALID_SECTOR_NUMBER);
302- }
303- */
304-
305- // Determine the destination address
306- // auto *secData = dst.data() + secNr * bsize;
307-
308- // Determine the source address (adding 56 skips the sector header)
309- auto *mfmData = &track[offset + 56 ];
310258
311259 // Decode sector data
312260 decodeOddEven (dst.data (), mfmData, bsize);
261+
262+ for (isize i = 0 ; i < 8 ; ++i) { printf (" %0X " , dst.data ()[i]); } printf (" \n " );
313263}
314264
315265optional<isize>
0 commit comments