Один и тот же фрагмент статистики, взятой разными способами (это диск isdos, приличная часть секторов которого не читается):
Чётный/нечётный берутся на "как повезет", т.е. нет 100% гарантии что загрузится именно чётный а не нечётный, и в ~20% случаев чётный равен нечётному. По факту-то, конечно, это не так (не равны), но в силу неидеальных таймингов электроники дисковода, пропуск одного магнитного импульса после появления индекса не помогает.Код:Общий -X#, .xxxx, .xx -%x x+.#- -x+ -Xx .x+-#. -#. +Xx ,#--x- -x, xx-#xx. .xxxx, -x+. +x, ,xxx+, ,+++ +++ .+x+- -#. ..xxx++x-.. x+ -#, . #- xx x#- xx-#, . . .X+,#-.++...+x,. ..,x..+-.,. . .. xx . +x+x-,xx. -xx .xx, x+ +##+ ,xx +x- ,x+ +# xx#. ,#-#+ -x- .#,+#x+ +#x. +x, +##x ,xxxx, -x+ ,X#. xx .xx -#. .X#, xx..xx xx. +##x .xxxx -x- #-x#x .#x #+ us------2-------3-------4-------5-------6-------7-------8-------9 Четный ,##- xx -#x #+ .#x x+ +#x ,#- -#xx. -+x. ,xxx+- +x+ ..xxx+. . .#+ . xx xx-#, . .#-,+-., ...,x,.+-. . .. . +x+x- ,xx +xx+. +x- xx#. .#+ +#x+ .xx. x#x. ,x+. .##. xx. ,##. +x. +#x. .xx. .x#x ,x+ us------2-------3-------4-------5-------6-------7-------8-------9 Нечетный -#. .+x, ,xx. .#, ,#- ,x+ -# -#. -# -#, -x+ ,#, xx. .x++ -x+, +x, ,+++ +x+, ,#. .+x-. -#- #- x#- . .,X+. +x,. ,. xx -x+, .xx, xx ,x+ ,xx +# -#- -#, .#. +x- xx, +x. .xx. -x+ #, xx -# #. .x+ xx. +x .xx. -x- #- xx .x+ us------2-------3-------4-------5-------6-------7-------8-------9
В общем, сейчас дошел до такого алгоритма (в случае ошибки чтения дорожки в быстром режиме):
1. Загрузить ОБЩУЮ статистику
2. Загрузить статистику через один импульс (как повезет - 80% нечётную и 20% чётную)
3. Вычислить разницу между общей и половиной и проанализировать:
А) Половины почти совпадают (отклонения несущественные) - значит перемагниченности нет (эту характеристику, кстати, неплохо было бы выводить в инфо о треке).
Б) Половины заметно не совпадают - значит дорожки имеют перемагниченность. В таком случае необходимо вычислить кривую для компенсации перемагниченности (№1), с учётом того, что в разности будет выпирть чётный.
4. Усреднить общие-нечётные, и составить кривую пороговых значений, компенсирующую плавающую скорость (№2). Также вывести величину неравномерности скорости.
5. Читать дорожку в режиме "особый", с кривыми скорости и перемагниченности. В 80% случаев она будет прочитана как надо, и в 20% случаев компенсация перемагниченности усугубит картину. За несколько попыток всё должно будет прочитаться (1-80% 2-96% 3-99.2% 4-99.84% 5-99.97%).
Но если и в этом случае будут проблемы, необходимо дампить "сырые" данные таймингов, и делать что-то с ними. Хотя скорее всего это будет означать что там плавающие биты, либо дорога местами физически провреждена, либо размагнитилась (когда граница между + и - размывается до исчезновения). Ну, в этой ситуации... мы... просто наша, эта самая... мы уже здесь наши полномочия всё, окончены.
ЗЫ: Процедуру особого чтения уже сделал, перед чтением дорожки нужно загрузить массив порогов и четно-нечетных отклонений. По 3 байта на каждый "чанк" (который равен 128 байтам, т.е. 512 MFM импульсам). По сути остается всю эту алгоритмику, анализ статистики и вычисления графиков в питоне запрограммировать.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
