Данные совсем без заголовков секторов она прочитать не сможет, судя по всему. Работает эта команда не так как в ВГ93. Она ждет индексный импульс, после чего ищет первый заголовок сектора, потом начинает читать содержимое трека. Первый выданный ей байт это первый байт данных этого сектора. Когда сектор кончается, она продолжает читать данные дальше, пока не считается весь трек (в моем случае она это делает циклически несколько раз, т.е. несколько оборотов диска, выдавая порядка 28 000 байт). Если на треке нет заголовков секторов, то эта команда ничего не читает и драйвер выдает ошибку 1122. У меня подозрение, то что как Titus её использовал это нестандартный прием, т.к. не соответствует документации.
Вот почему-то не возвращает. Этот синхрокод A1A1A1 пишется перед данными каждого сектора и по идее данные секторов должны быть правильными по этой причине. Но на практике это не так, и синхронизация почему-то не восстанавливается, и данные секторов оказываются искаженными.
Вот картинка полученная при чтении чистого трека, на который не производилось посекторной записи и где синхронизация не слетает в конце секторов.
https://ibb.co/WtpF9Wc
(Значения байт указаны в десятичной системе. 78 это 4E) Первым синим прямоугольником обведен 15-й сектор размером 256 байт (имеет код 1), там же видно что это 61-й цилиндр. Вторым синим прямоугольником - 16-й сектор. Большие области нулей - данные, перед которыми идут байты 161, 161, 161, 251 (A1 A1 A1 FB). А красный квадрат это момент срыва синхронизации, как я полагаю из-за шва который получается при записи трека когда он зацикливается. И дальше все сектора идут искаженные, в том числе их данные. Данные становятся равными 255 - это явно попали синхроимпульсы MFM вместо данных. И синхронизация не восстанавливается почему-то перед областями этих данных, хотя по идее должна. Почему так происходит непонятно.





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