User Tag List

Показано с 1 по 10 из 185

Тема: Spectrum Archive Reader - Программа для чтения TR-DOS дисков

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    23.11.2007
    Адрес
    Ростов-на-Дону
    Сообщений
    193
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    CPLx, Понятно. Вообще конечно прискорбный факт... Получается что это какое-то искусственное ограничение...
    Провел небольшое исследование на эту тему.
    Сначала убедился что у меня нет индексного импульса именно из-за неисправности дисковода, а не контроллера. Потом направил на провод INDX сигнал с TR00. Это дало мне возможность имитировать наличие индексных импульсов путем перекрывания TR00 вручную. Жуткое извращение, но именно оно окончательно доказало неисправность именно дисковода. Эта самая имитация индексных импульсов (путем вставления и выстаскивания в датчик TR00 ножниц с большой частотой руками) позволила частично запустить команду чтения трека, т.к. контроллер стал видеть индексные импульсы (а она читает от индексного импульса, и без него не отрабатывает). Команда постоянно выдавала ошибку 23, но это не особо важно. Важно что она выдавала данные. Данные были какой-то кашей, которую я не смог найти на читаемом диске. Но где-то она их брала. Потом я вставил чистый диск (TR-DOS, все сектора заполнены нулями) и попробовал прочитать уже его. И тут оказалось что команда чтения трека возвращает одни нули на этом диске (по прежнему с ошибкой 23). Проверял много раз оба диска: записанный возвращает кашу, чистый возвращает нули. Никаких межсекторных данных, которые я ожидал увидеть на чистом диске более четко видными. Возвращение нулей на чистом диске навело меня на мысль что команда чтения трека читает на самом деле не трек, а содержимое секторов. Т.к. в драйвере уже был ранее мной найден один хак, то я решил проверить нет ли и тут хака.

    (Хак который был найден ранее заключается в следующем. В драйвере есть команда ожидания индексного импульса. По логике кажется что для ожидания индексного импульса драйвер должен проверять значение индексного датчика, и при регистрации отверстия сигнализировать об импульсе. Но оказалось что сделано там это всё иначе. Вместо этого драйвер пытается прочитать несуществующий сектор, после чего возвращает управление. Контроллер, когда не может найти сектор, ждет 2 импульса и отвечает ошибкой что сектор не найден. Таким образом, чтение несуществующего сектора обеспечит нам попадание на индексный импульс (второй по счету при этом; т.е. один импульс мы пропустим). В ВГ93 можно было напрямую посмотреть состояние этого датчика. Но в этом контроллере - нет. В нём можно посмотреть датчик TR00 и датчик защиты от записи, но индексный датчик недоступен для прямого чтения.)

    Так вот, в поисках предполагаемого хака я полез в исходный код драйвера и увидел что здесь никакого хака нет и что он честно передает команду чтения трека COMMND_READ_TRACK драйверу FDC. Дальше я полез в документацию контроллера. А там я увидел следующее:

    Нажмите на изображение для увеличения. 

Название:	2020 08 14 zxpkru1.jpg 
Просмотров:	66 
Размер:	65.5 Кб 
ID:	73266


    Если я правильно понял описание, то команда чтения трека читает все сектора подряд, начиная от индексного импульса, не проверяя параметры секторов. В этом её главное отличие от команды Read Data, которая читает только сектора с указанными параметрами (номер, цилиндр, сторона, размер), и при несовпадении параметров она такие сектора игнорирует (надо сказать что ВГ93 проверяла только цилиндр и номер сектора, и точно не проверяла сторону, из-за чего существуют разные варианты форматирования верхней стороны - поэтому иногда бывает что верхняя сторона не читается на PC-шном контроллере). Чтобы прочитать ей (командой read data) сектора, надо заранее точно знать все их параметры, иначе ничего не получится. Read track же читает сектора не глядя на их параметры: попался сектор, она прочитала; попался следующий - снова прочитала. Получается что-то вроде совмещенного сканирования и чтения, всё в один проход. Но читаются именно данные секторов, а не межсекторное пространство.
    Судя по документации, команды, аналогичной чтению дорожки у ВГ93, данный контоллер не имеет. Именно контроллер, а драйвер уже как следствие.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	2020 08 14 zxpkru2.jpg 
Просмотров:	63 
Размер:	46.3 Кб 
ID:	73267  

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

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

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

Похожие темы

  1. Ответов: 534
    Последнее: 04.05.2025, 15:40
  2. Программа для нарезания окон ZX Spectrum
    от AAA в разделе Утилиты
    Ответов: 84
    Последнее: 16.09.2010, 11:07
  3. Плагин FAR для чтения реальных дисков TR DOS
    от Alexandr Medvedev в разделе Утилиты
    Ответов: 2
    Последнее: 15.09.2010, 06:17
  4. Новый FAR plugin для форматирования дисков TR DOS
    от Alexandr Medvedev в разделе Утилиты
    Ответов: 3
    Последнее: 03.08.2007, 16:44

Ваши права

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