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

User Tag List

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

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,662
    Спасибо Благодарностей отдано 
    1,255
    Спасибо Благодарностей получено 
    1,883
    Поблагодарили
    711 сообщений
    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
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

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

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

Похожие темы

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

Ваши права

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