Представляю прекрасно, сам написал драйвер дискеты для своей системы. Более того, аналогичная ошибка (дерагние к центру) есть и в ЦПМ (которая Микродос + CBIOS 4.xx-5.xx). А происходит она следущим образом. Если трек читается с ошибками, то происходит такая ситуация. В какой то момент времени ВГ ошибочно воспринимает некий поток битов, как заголовок сектора (не забывай, трек битый, секторы коцанные). Используется команда "чтение сектора" с установленными битами контроля положения МГ. Что делает ВГ93? Она выполняет позиционирование на тот цилиндр который задан в регистре дорожки. К примеру. В регистре дорожки 63. Считано ошибочно 30. Что как будто головки находятся на 30-м цилиндре. ВГ93 сделает 30 шагов вперед. Я это проверял с драйвером ЦПМ, двигая головки руками. Из 10-и попыток 8-9 головка позиционируется обратно на тот цилиндр с которого ее сдвинули, но 1-2 раза получается тот самый эффект, как в трдос. Ещё указанный баг возникал при многочисленных двиганиями головками при чтении сбойного сектора.
Не отрицаю, что в трдос может быть ещё и другая ошибка. Но то, что это ошибка ВГ93 - я доказал опытным путем. Сначала просто наблюдал и строил предположение. Ладно бы ошибка трдос, а почему цпм-нвй драйвер так же себя ведет? И чем ближе к концу диска тем вероятность выше.
Пофик. Но у него другие проблемы. Да, 7-ая страница занята. Это определенный минус.
Уверен? Давай исходники. Гляну. На спор я делать ничего не буду. Не интересно. Если ты используешь команды ВГ93 и думаешь что я убьюсь портировать - ошибаешься. Какая разница какой контроллер. Придется переписать процедуры вот и все. Если исходник нормальный, то проблем думаю не будет.
Кстати, программы эти - форматтеры диска? Я не видел их. Скорее всего форматирование с разными shift-факторами? По головке, по цилиндру? C разным фактором чередования секторов? С разными межсекторными промежутками?
Музыки в лоадерах нет. И ты сам понимаешь почему. Как сделали проигрывание музыки в трдос? Читается посекторно, вызывая процедуру чтения сектора в трдос. каждые 1/50 сек вызывается музыка на проигрывание, между чтением секторов. Это по сути свой проблемно-ориентированный драйвер встроенный в программу (в демку). На +3 можно сделать так-же. для этого +3дос вызывать не надо, т.к. регистры контроллера доступны. И что мы получим? Привязанную к дискете программу. Это надо? Это не надо. Некрасивое решение. (но, практически единственно возможное в данной конфигурации железа (dma у нас нет)).
Конечно. А почему? Да потому-что в трдос фактически получается что? Программа читает не файл, а последовательно расположенные секторы. Один за другим. Но программа привязана к архитектуре дискеты. Жестко. Единственное превосходство трдос над +3дос - скорость чтения с дискеты. Но в этом лежит и камень преткновения. В +3DOS как бы двойная прослойка. Уровень дос и биос. читается раз в 5-7 медленнее (я проверял на дискета с фактором чередования 1, с фактором чередования 2 или 3 будет соотв. побыстрее). Но можно это ускорить. И этим мне заняться интересно. Сделать оптимизатор в дисковом драйвере +3дос, на предмет непрерывности читаемого блока секторов.[COLOR="Silver"]





Ответить с цитированием
) есть только рег. дорожки и команда SEEK, больше никак!
