да, конечно - будет работать.
можно сменить прошивку на альтернативную FlashFloppy https://zx-pk.ru/threads/25546-prosh...-spectrum.html
и сразу работать с TRDобразами
да, конечно - будет работать.
можно сменить прошивку на альтернативную FlashFloppy https://zx-pk.ru/threads/25546-prosh...-spectrum.html
и сразу работать с TRDобразами
Последний раз редактировалось goodboy; 09.05.2020 в 21:36.
Pyhesty(09.05.2020)
27 с такой задержкой (порядка 400 мс) это когда драйвер не видит заголовок сектора. Он ждет два импульса и возвращает ошибку 27. Диск выглядит как неформатированный в том месте. Но тут уже был случай когда драйвер не видел первый сектор, хотя тот существовал. Поэтому после этого мне судить стропроцентно о неформатированности по таким признакам сложно.
80-й трек наводит на мысли что диск форматирован только на 40 цилиндров. Такая разновидность форматирования существует.
- - - Добавлено - - -
Вот эти 360К меня сейчас смутили. 160 треков это 720К. 360К это как раз 80 треков (40 цилиндров).
Pyhesty(10.05.2020)
ну значит я что-то сам намудрил... либо старые ZX дискеты форматированы как 720кБ (возможно жеж такое?)
https://cloud.mail.ru/public/4m2d/4ZGvchvpg
а Studio не смог форматнуть и записать 720к...
или у меня дискеты не поддерживают 720к...
чет я запутался, завтра поэкспериментирую...
а можно дискеты в студии форматнуть на минимальную плотность 320к? (что бы надежнее дискеты были, ну или дискеты или флоп (MC5303 не поддерживают?)
Pyhesty(10.05.2020)
Сделал новую версию (1.0.0.10). Выложил в первом посте темы.
Что добавлено:
1. Автоопределение параметра Head верхней стороны. Когда сектор на верхней стороне не читается, то программа проверяет параметры заголовков на диске с целью определения значения head. Делаться это может на каждом треке отдельно (но только на верхней стороне). Поэтому теперь подбирать параметр не надо, всё может быть определено автоматически и я не ожидаю что с этим автоопределением могут быть какие-то проблемы, но тем не менее оставил возможность его отключать и задавать параметр вручную.
2. Быстрое чтение формата interleave и некоторых других. Не думаю что очень нужная вещь, но почему-то именно её я хотел сделать больше всего, она мне казалась самой интересной, но в итоге оказалась самой сложной и на неё ушло больше всего времени. Работать будет не на всех машинах, а только на тех где есть таймер высокого разрешения (обычно это компы датируемые с 2005 года и позже) и насколько я понял на винде Vista и выше. Некоторые форматы наоборот будут читаться медленнее, иногда значительно, поэтому есть возможность отключать эту функцию (она обозначается как Read Mode: Fast) и вместо неё включать режим чтения Standard, при котором сектора запрашиваются подряд с 1 по 16.
3. Ускореннное чтение bad-секторов (если их несколько на одной дорожке). Обычно (и как было в этой программе раньше) когда программа сталкивается с нечитающимся сектором, она пытается прочитать его еще раз, из-за чего головка пролетает весь трек вхолостую чтобы снова попасть на этот нечитающийся сектор, и так много попыток. В это время можно было прочитать другие сектора на треке, возможно тоже нечитающиеся, и увеличить счетчик попыток их чтения. В новой версии так и сделано: при встрече нечитающегося сектора продолжается чтение оставшихся секторов на дорожке. Если на дорожке есть N bad-секторов, то можно прочитать каждый из них 5 раз за 5 оборотов диска, вместо 5xN оборотов как было до этого.
4. Ускоренное чтение неформатированной области и сообщение о несоответствующем формате. Если программа не может найти заголовок сектора, то предполагается что остальные заголовки тоже могут отсутствовать, поэтому делается сканирование трека на предмет их наличия. Сканирование трека занимает порядка 215 мс и позволяет увидеть какие сектора отсутствуют и не пытаться их прочитать (попытка прочитать каждый такой сектор занимает 400 мс). Если будут обнаружены сектора нецелевого формата (то есть например размером 512 байт на диске читаемом как TR-DOS), то будет выдано сообщение об этом. Раньше это выглядело как обычная ошибка на диске.
5. Размер формы уменьшен. Диапазон допустимых треков сокращен до 172. Драйвер, по крайней мере у меня, всё равно не может позиционировать головку на 86-й цилиндр (считая от нуля). Т.е. у меня он работает только на 86 цилиндрах, с 0 до 85 включительно - это 172 трека.
6. Лог отключен. Лог-файл не создается, количество сообщений в окне уменьшено, оставлены только значимые для пользователя.
7. Сделано чтение формата CP/M. Но оно не протестировано, т.к. таких дисков у меня нет.
Чтение CP/M сделал, но не протестировал до конца. По сути написано всё это вслепую, по аналогии с TR-DOS. Поэтому рекомендую тщательно её протестировать, и не забыть проверить целостность данных.
crackintosh(21.06.2020), Gavrilov_S(13.01.2021), Pyhesty(25.05.2020), Serebriakov(22.05.2020), Titus(21.05.2020)
огромное спасибо!
есть несколько вопросов:
1. Друг принес дискеты на всех не читается 0й сектор, при этом в реальном ZX дискета читает,
это какой-то изощренный способ защиты от копирования? =)
не знаю насколько это актуально, но интересно как это реализовано? там реально ничего не записано на 0м секторе?
2. Вторая проблема, я не могу записать обратно (на другой диск) считанный образ, для примера, есть дискета, она 158 треков.
я её записываю обратно ZX Studio и не могу считать обратно этой прогой, выдает ошибку CRC Error на всех секторах,
при этом ZX Studio обратно считывает (кажется даже корректно, проверить не могу).
3. Третья проблема не относится к этой программе, но что бы не плодить сущностей =) чем создать удобно trd образ на 160 треков (750кБ?)
я очень надеялся, что это можно сделать просто в ZX Studio, но он создает только образ 80 дорожек (((
спасибо!!!
ps: ОС WinXP
CPLx(25.05.2020)
Нет, это не защита от копирования, а уже встречавшийся феномен которому у меня нет объяснения. Эта программа читает диск используя функцию чтения сектора, конкретно IOCTL_FDCMD_READ_DATA. Другая используемая функция - IOCTL_FDCMD_READ_ID - она читает заголовок первого попавшегося сектора. Как показал эксперимент здесь, на некоторых дисках обе эти функции драйвера не видят первый (он же нулевой в моей нумерации) сектор. Почему так происходит я не знаю. Как удается другим программам (той же ZX Disk Studio) читать такие диски мне тоже неизвестно. Может быть они используют функцию чтения трека (IOCTL_FDCMD_READ_TRACK), а может используют то же чтение сектора что и я, но с другими параметрами, неизвестными мне. Так или иначе, моей программой такие диски прочитать нельзя. У меня таких дисков нет, поэтому я не могу провести детальные исследования с ними и отладить их чтение. Мне остается в таких случаях только рекомендовать использовать ZX Disk Studio. Или что угодно еще что может их прочитать. Судя по всему, причина лежит в формате диска, но в чём именно особенность этого формата я не знаю.
Запусти программу с ключом /logfile (будет создан файл с логом), прочитай диск и скинь лог-файл сюда. Я хотел бы посмотреть что там, может удастся что-то понять.
По картинкам оказалось что цвет панели со статистикой отличается от цвета формы (по идее должен совпадать). В 7-й винде совпадет, а оказывается в XP нет.
На втором скрине диск читался 80 секунд и это в быстром режиме? Там наверное он быстрее прочитается в режиме Standard. Скорее всего формат хитрый, я на такие не расчитывал и думал что они редкость.
На первом скрине вообще 193 секунды. Что-то это всё работает у других гораздо хуже чем я предполагал.
У меня она создает образ на 160 дорожек без проблем. Там надо создать образ, потом сохранить как trd.
Если она создает 80 дорожек (т.е. 40 цилиндров), то может она использует настройки из биос и надо дисковод по-другому там настроить? Но это только догадка.
Последний раз редактировалось CPLx; 25.05.2020 в 18:36.
Pyhesty(25.05.2020)
ок! во вложении лог,
пока экспериментировал, оказалось, что если переключить скорость на 300к, то все прочиталось )))
(это есть в логе)
хотя ZX настроен на 250к, вот так, получается драйвер один, а работают в разных приложениях по разному))
так что вопрос снят =) спасибо)
CPLx(25.05.2020)
Вот это новость. Получается что одни диски читаются на 250К, а другие на 300К, и это всё на одной машине?
И большое спасибо за лог. Может сделаю обработку этой ситуации, чтоб таких тормозов не было. Потому что сектора вообще-то в неправильном порядке читались и поэтому всё медленно было.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)