Обновлена Кошка по упорным изысканиям этого года ув. MiX различных режимов работы программы.
https://www.dropbox.com/s/8sfdatz52m...a_tdm.zip?dl=0
Так же добавлена функция (не новая есс-но, с IOCTL_FDCMD_READ_TRACK давно игрался, например, @Titus https://zx-pk.ru/threads/16133-tryuk...fdd-82077.html );
сюда же комментарий от Simon Owen:
"Unfortunately, the PC floppy controller doesn't provide an official way to read the CRC bytes for each sector. It only reports whether the CRC found on disk is valid. :(
However, it is possible to read the CRC bytes for the first sector on each track, using the IOCTL_FDCMD_READ_TRACK command. This command works like a multi-sector read command, and uses the sector "size" parameter to determine how many bytes to read from each sector. If the disk contains 512-byte sectors (size=2), and you use IOCTL_FDCMD_READ_TRACK to read 1 sector with size=3, the FDC will return 1024 bytes of data from the sector data field. The bytes at offset 512 and 513 in the data will be the real CRC bytes.
If the disk tracks were created as a single bitstream write, it may be possible to see the CRC bytes for all sectors. If you use size=6 the FDC will return 8192 bytes of data, which can be parsed to extract the other CRCs. This is often possible for commercial disks that were created using a TRACE disk duplicator. Modified disks will introduce splice points in the bitstream, which will prevent this technique from working correctly."
В общем, понятно, что особо далеко не уедешь, но! мне давно хотелось найти ненапряжную, "бюджетную" для любого компа возможность под виндой по-ходу собрать статистику размера GAP3 реальных (пока только MFM) дискеток разных операционных систем при различных количествах секторов. И в принципе, если принять неизбежность ряда ограничений, она справляется с этим на ура не прибегая к аппаратным читалкам.
В архиве выше приложены примеры треков нескольких попавшихся дискеток.
Пока наблюдения:
- если сделать просто обычное форматирование дискеты на целевой системе, то инфа треков Кошкой читается идеально. И после разбора track_raw можно будет произвести запись 1-в-1 с разметкой оригинальной дискеты.
- некоторые дистрибутивные дискеты "от производителя" так же дямпятся треками идеально.
- у обычных "живых" рабочих дискеток в этом режиме читается стабильно первый сектор, два байта контрольной суммы этого сектора и следом первый байт '4E' блока GAP3, остальной поток идёт с битовыми сдвигами и порой удачными чётными секторами.
- хочется встретить дискеты с интерливингом.
- если у дискеты первый сектор трека, по какой-то причине, не распознан, IOCTL_FDCMD_READ_TRACK вообще ничего не возвращает.
- битые сектора сносят гармонию на треке напрочь.
- каждый трек сохраняется в отдельном файле, поэтому рекомендуется останавливать считывание через ESC по обстоятельствам для принятия решения.
- Правой кнопкой мыши на любом кубике, а там "Dump all (40/80/160) tracks from diskette*" (можно выбрать любую сторону дискеты или обе сразу). Размерности в байтах.
- косметические комментарии лучше в личку.
SECTORSIZE: '00' - 128, '01' - 256, '02' - 512, '03' - 1024, '04' - 2048, '05' - 4096, '06' - 8192
'sync 00...00'A1'A1'A1'FE - identification field start
'sync 00...00'A1'A1'A1'FB - data field begin
RS1SETUP4 (DEC RX50 software diskette):
{[Index-field section and ID-field of Sector 1 is not catched][sectordata 512][CRC16 2][GAP3 '4E'-48]} - сектор №1
{[SYNC '00'-8][A1'A1'A1'FE'CYL'HEAD'SECTOR'SECTORSIZE'CRC16-2][GAP2 '4E'-22][SYNC '00'-12][A1'A1'A1'FB][sectordata 512][CRC16 2][GAP3 '4E'-48]} - сектор №2
... остальные 8 секторов
[GAP4b '4E'-78]}
IRA (Э-85 @CodeMaster formatted diskette):
{[Index-field section and ID-field of Sector 1 is not catched][sectordata 512][CRC16 2][GAP3 '4E'-16]} - сектор №1
{[SYNC '00'-12][A1'A1'A1'FE'CYL'HEAD'SECTOR'SECTORSIZE'CRC16-2][GAP2 '4E'-22][SYNC '00'-12][A1'A1'A1'FB][sectordata 512][CRC16 2][GAP3 '4E'-16]} - сектор №2
... остальные 8 секторов
[GAP4b '4E'-208]}
typical used diskette:
{[Index-field section and ID-field of Sector 1 is not catched][sectordata 512][CRC16 2][GAP3 '4E'-1]далее расшифровка потока сбивается но сектора структурно различимы и угадываются}




Ответить с цитированием