> Всегда ли это так или "interval" может включать другое число "лишних" бит?
На практике в агате другие комбинации не использовались.
Добавить больше нулей можно попробовать, если FF заменить на 7F. Но что на это сделает контроллер - не знаю, может быть добавит ещё одну единицу.
> Есть какие-то мнения/комментарии?
Я бы не называл A4 байтом здесь. Контроллер работает с последовательностью бит и до распознавания синхросбоя он не знает, где начало байта (т.е. счётчик бит имеет произвольное значение). Только обнаружив синхросбой, контроллер сбрасывает счётчик бит и потом уже можно говорить о байтах.
> Можно ли привязываться к сигнатуре 1000 1001 0010 0100 0 (на картинке слева от красной черты), чтобы после этой сигнатуры искать 0xFF и дальше пролог поля адреса/данных?
Привязываться к этой сигнатуре - да, но искать за ней только одну единицу (ну или если предпочесть байты - любой байт с D7 = 1).
Но тут всё зависит от цели. Если цель - типичные диски, т.е. разрабатывается чтение в DSK-формат, то да, всё хорошо. Или если использовать декодирование только как критерий успешности чтения дорожки (прочитали успешно 21 сектор - идём дальше).
Если разбирать любые возможные агатовские диски и связанные с этим детали (вроде всяких защит) - я бы выбрал повторить работу реального автомата 840ки, а он не умел оперировать настолько длинной цепочкой. Т.е. он находит при чтении 10001 и либо декодирует как 101 либо рассматривает это как синхросбой. Дальнейшая цепочка (00100100) декодируется по всем правилам MFM, потом опять встречается 10001 и всё опять также (но тут уже синхросбой гарантирован).
Тут суть в том, чтобы правильно отработать ситуацию, например, когда синхросбой специально встроен в сектор (в защите mousegraph, например) и важно, чтобы байты до и после синхросбоя прочитались правильно (т.е. так же, как их выдавал контроллер 840ки). Я не исключаю, что при поиске полной сигнатуры всё то же будет правильно, но не уверен.
Также один из видов защит: подсчёт размера трека побайтово. Без учёта сихросбоев, но с точным подсчётом успешно прочитанных байт. Синхросбой, а тем более стык записи (там, где "запись" выключалась и какой-то байт мог быть даже не дописан) могут дать причудливые комбинации бит и это неплохо бы учитывать.
> Или возможны еще "лишние" нули перед 0xFF ?
Количество нулей и так максимально для дисковода. Если их увеличить ещё на записи, то на чтении можно словить неопределённость.
Так что так не делалось. Не знаю, возможно ли агатовским контроллером синтезировать 4 нуля или больше.
Даже если не закидывать данные в регистр записи (как это делалось на 140ке), это не помешает MFM-кодеку писать кодированные нули (т.е. 01010101...).