Важная информация

User Tag List

Показано с 1 по 5 из 5

Тема: Трюки с контроллером FDD 82077

  1. #1
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,552
    Спасибо Благодарностей отдано 
    1,216
    Спасибо Благодарностей получено 
    1,752
    Поблагодарили
    681 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Трюки с контроллером FDD 82077

    Задался целью проверить, чего полезного в плане чтения RAW-данных с дискеты может дать стандартный PC-шный контроллер 82077 (и его аналоги), и был весьма разочарован. Работаю с ним через драйвер fdrawcmd.sys.

    Единственная команда для чтения трека целиком IOCTL_FDCMD_READ_TRACK, и та сделана весьма бестолково. Эта команда читает последовательно все сектора на диске от индексного отверстия до сектора с номером EOT. Причем, считает, что все эти сектора одинакового размера, какого задашь. Так как размер сектора можно задавать вплоть до 16кб, то это позволяет нам считать всю RAW-информацию с трека в составе первого встретившегося сектора. Одно но - внутри сектора контроллер не проверяет наличие маркера синронизации 100010010001001, и если встречаются склейки (а это вполне нормально, если информация на трек была записана не единым потоком, а многослойно, например форматирование/запись), то в этих местах синхронизация теряется, и данные на рассинхронизированных участках восстановлению не подлежат. Таким образом, при чтении всей дорожки в виде единого большого сектора, мы имеем RAW-данные с произвольным выпадением некоторой информации из-за рассинхронизации. Можно, конечно, многократно прочитать дорожку, в надежде, что те места, которые рассинхронизировано прочитались в прошлый раз, прочитаются корректно, но что-то мне подсказывает, что это 'прокатит' далеко не во всех случаях.
    Вариант номер 2. Допустим, у нас стандартный TR-DOS-диск с 16 секторами на дорожке по 256 байт. Делаем чтение трека, установив размер сектора 512 байт, и получаем каждый второй сектор в корректном, правильно-синхронизированном виде, с 'приклеенной' в конце информацией о своей контролльной сумме и заголовке следующего сектора. Но такой метод не позволяет вынуть информацию о нечетных секторах, т.к. команда чтения RAW-данных синхронизируется только от индексного маркера. Словом, и тут засада.

    p.s.: Может кто-то еще проводил эксперементы, и знает другие методы чтения хотя бы контрольной суммы секторов?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    15.08.2009
    Адрес
    Чайковский
    Сообщений
    833
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я пытался использовать команду IOCTL_FDCMD_READ_TRACK,
    но ей необходимо чтобы дисководов было два и во втором тоже
    должна стоять дискета (это что-то для калибровки).
    Решил пользоваться только сканированием дорожки
    и чтением.

    Скрытый текст


    Profi v3.2 (SIMM 1024kB, Color CP/M, Turbo VG)
    Profi v3.2 256kB + PAL coder
    Плата ZXM Phoenix 1024kB + VGA converter
    ZX Evolution 4096kB + SSD-1Gb
    Плата Speccy 2010
    Плата Sprinter Sp2000s
    Плата Reverse U9 EP3C
    Плата Reverse U10 EP3C
    Плата Reverse U16 EP4CE22
    Плата Mist v1.31
    Terasic DE1
    Terasic DE1-SoC
    Terasic DE10-nano
    iCore 3
    [свернуть]

  4. #3
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,552
    Спасибо Благодарностей отдано 
    1,216
    Спасибо Благодарностей получено 
    1,752
    Поблагодарили
    681 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Anykey Посмотреть сообщение
    Я пытался использовать команду IOCTL_FDCMD_READ_TRACK,
    но ей необходимо чтобы дисководов было два и во втором тоже
    должна стоять дискета (это что-то для калибровки).
    Решил пользоваться только сканированием дорожки
    и чтением.
    Знаю про этот способ, но он не подходит, т.к. для этого нужно два дисковода. А у меня, да и вообще на новых матерях, в биосе поддерживается только один дисковод.

  5. #4
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,767
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,173
    Поблагодарили
    770 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    изучи исходники mktrd, может чего-нибудь узнаешь нового.

  6. #5
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,552
    Спасибо Благодарностей отдано 
    1,216
    Спасибо Благодарностей получено 
    1,752
    Поблагодарили
    681 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    изучи исходники mktrd, может чего-нибудь узнаешь нового.
    Судя по исходнику - это простая посекторная читалка. Без всяких наворотов.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 03.12.2010, 13:44
  2. Ответов: 4
    Последнее: 18.05.2009, 23:40

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •