Смотрю тут, насколько удобно будет выводить "содержимое" дорожки для юстировки пороговых значений...
Если брать просто усредненное, то там не факт что поможет. Вот например:
Я уже показывал этот диск в соседней теме, но в графическом виде:Код:Arduino floppy dump utility v0.01b (UDI) (c) 2019-2020 by Denis Dratov Port: COM6 - AFD device, firmware version 1.0 Rotation speed: 300.2883 rpm Probing track stats, to figure thresholds.. us-----2|------3|------4|------5|------6|------7|------8|------9| ,Xx. .xX#- #Xx. .xX+. .,... X%+. ,xx. .... %+ .%- +% XX- xx#+ x#Xx- . ,+xx+. . .,... . ,..-xX#-,,,,,...,,.,,.,,,.,,,,.,..,... . .. .... . ... . . ,---++--+++++--+-----------,----,,-,... ..... ...... ,----+++++x++++----+-----+----,-.,.,... . .. ...,. . . .,,-.-,-+-----+--,+-+++---+---,,,----,,,,,......... . .... ...,-,+++++++---------,,-,-.,,-,--,,,,--.,.-,,,,,..., . .. ...,.x#+++xxxx++,.,. ,.... .,,,-,. +% %, %+ %%.. ,.,. ##x,. .+x##, ..... %+-.. .-++.. ..... %X x% .%, X#x. .xx#x. +%x-. -+x+. ..,., -%, %X X% +%+, -x+. #X+ .##+. .,,. X%. ,.. ., x%- ,%# %% x%, ,#+#- ... +%# .++x, .,.. %% #%, ,%X %X +xx+ .#%. ,x#x. .,,. x%+ +%X %% %%, . #X+ .x#x#- , . .x%# -+,+, ... %X +%X +%X .#Xx ,xxxx, ,X. +###- #x .x##x, .x#. +###x ##. .x#Xx- .x#x -+x##x+, ,Xx xx##+ +xx+ .++xxxxx- .#x +#X#. ,X+ x#X#. ##. -x##x. ##. .x##+ x#. +#X#. x# -###- ,X. ####. .X+ -###- #x -XX- x# .#X#. +X. ,XX- .X- ##X. Xx +XX, #x .XXx ## #X# ## ###. ## #X# ## #Xx ## XXx #x -XXx Xx +XX+ .X+ x#X, .X- X#X. .X, X#x. -X. -XXx +X x#X- xX. ##X, ## .X##, ## ,X##. #x +XXx X+ xXX- .X- x#X- ,X. ##X, .X- ##X ,X- .X##, -X+ -X#x +X- +XX+ . x#. +### .
Очень сильно плавающие значения. Это максимальное разрешение по времени (сверху вниз, каждая строка - информация о таймингах на128512 поворотов доменов). Если для каждого куска использовать свои пороги - в принципе даже что-то можно вытащить (конечно, не того участка который почти в самом начале - там дохлый номер). Но если первым этапом сканировать нулевую дорожку, и использовать усредненные тайминги для прочитки всего диска...
Идея какая... Перед началом прочитки диска вытаскивать эту вот статистику (скрыто, или может быть показывать как-то по-минималке), и руководствуясь данными из неё, читать весь диск. За один первый заход.
И если в первом заходе были ошибки CRC, делать второй заход, в ходе которого идти только по дорожкам с плохим CRC, и предварительно вытягивать эту статистику для каждой дорожки, чтобы выставлять адекватные пороги даже для каждого отдельного его фрагмента.
Но если такую логику применить к этому диску - на первой же дорожке фейл. Т.е. усредненное будет мусорным, прочитать ничего не сможет с константным значением, взятым из этой кривой нулевой дороги.
И тут ведь как повезёт - первая дорога может быть отличной, а следующие все с другими, кривыми таймингами. В таком случае он будет впустую шлёпать до конца с относительно быстрой скоростью... просто потом ещё разок будет читать, но в 2 раза медленнее, по фактически всем дорожкам.
Как быть? Не хотелось бы городить лишние параметры. Учитывая, что заранее ведь человеку неизвестно насколько там всё плохо...
Даже брать пару дорожек, и усреднять их может не помочь...
Вот так будет выглядеть утрамбованная в 4 раза "картинка":
Выводить на второй стадии для каждой дорожки, на которой были ошибки CRC, такое вот ASCII'шное "художество"?Код:%%#, ,X%X- .,-,.. x#%%+ . ,+###+ . .,... . . .--++#XXxxxxx##xxxxxxxxxxxxxxxx+++x++-++--,,,,,-,,..-,,,,. .,.--#%xxx#x#xxx-------,---.,,-,--,,,,--.,.------,.., . .. %%#x,, .+###,. ,..., %%#x. .xx#x. +%%-. -+x+. ..,., +%%x -X#+. .-,. ,%%# -#x#+ .,.. %%% +xx+ .X%% ,x#x. .,,. .%%% .x#x#+ -.. ,%%% +XXXx, .x##X%x -+x####X#X%Xx, ,X##%# x#XX#x#%%X, %%. -X%%%- ,%% #%%%#. +%# ,%%%x %% %%%. .%X #%%# x%+ #%%%. %%. x%%%- -%x %%%+ . #%x +#%%X, .
~20 строки на дорожку DD диска, соответственно ~40 для HD (которые PCшные, 1.2/1.44). В принципе, для HDшных можно ужимать в 8 раз, чтобы не засирать экран ими.
Символы для отображения плотности сделал пока .,-+x#X% - можете предложить свои варианты.
Есть вариант объединить 1й и 2й проход. Т.е.:
0. Сканировать 0ю дорогу, взять из нее усредненные тайминги.
1. Читать дорогу с усредненными таймингами (с предыдущего шага).
2. Если были ошибки - сканировать тайминги, и повторно перечитывать дорогу с подробными таймингами. Взять из них же усреднённые, "на будущее".
3. Следующая дорога, шаг №1
Таким образом усреднённые тайминги будут перестраиваться по ходу чтения в случае сбоев, и использоваться для следующих дорожек.





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