Может как-то дефрагментировать образ диска перед использованием или это не универсальное решение?
Вид для печати
А можно прошивку новой версии скомпилированную сюда выложить- девайс спаял, не хватает карты памяти и прошивки.
тоже не понимаю, если есть LBA всех секторов на треке, какая разница с какой стороный читать, дисковод не обязан вот так сразу нужный сектор подставлять по головку после смены, вполне законно оборот диска протормозить
- - - Добавлено - - -
в реальности же, прервать чтение текущего сектора с карты, начать чтение другого сектра с сдкарты (ну в холостую прощелкать еще полсектора если он во второй половине FAT32 сектора лежит), на первый взгляд вообще не критичная для работы задержка выходит
Здесь проблема другого характера, контроллер, почему-то настолько тупой, что не проверяет в заголовке адресного поля значение стороны!!!!!!!!!!!!!!! Он считает, что данные должны быть с той стороны, которая выставлена на линии SIDE!!!! Это проверенный факт!!! В этом-то вся и проблема!!! Т.е. мы должны давать ему сектор той стороны, которая установлена на линии SIDE, если side в заголовке не совпадает с линией SIDE, то контроллер спокойно считывает такой сектор и думает, что он с нужной стороны.
ЭТО ГЛАВНАЯ ПРОБЛЕМА, почему нельзя держать данные только одной стороны!
PS: частично я эту проблему решил, подставляя неправильное CRC при смене стороны во время чтения дорожки или начиная новую дорожку.
А просто выдачу адресного маркера нельзя блокировать при смене стороны? если нельзя останавливать данные, нет адресного маркера, контролер не зацепится
Нашел вот материальчик
Взято отсюда http://fido7.ru.dos.narkive.com/cxtGdUZQ/udiЦитата:
-------------------------------------------------------------------------------
ПРИЛОЖЕHИЕ 3
Параметры стандартного формата TR-DOS
(cracked from TR-DOS)
При форматировании дисков TR-DOS (дисковая система ZX Spectrum) использует
следующие особенности:
IAM (адресный маркер дорожки) отсутствует
Длина синхропробела = 12 байт
Число MFM-маркеров 0xA1 в IDAM и DATA AM = 3
Длина GAP4A = 0 байт
Длина GAP1 = 10 байт
Длина GAP2 = 22 байт
Длина GAP3 = 60 байт
Длина GAP4B = до конца дорожки
Содержимое заголовков секторов:
Отсчет номера цилиндра C начинается с 0.
Байт H (номер головки) всегда равен 0x00.
Отсчет номера сектора R начинается с 1.
Байт N (код длины сектора) равен 0x01 (т.е. сектор 256 байт).
16 секторов на дорожке с интерлейвом 8 (т.е. порядок следования
секторов на дорожке следующий 1,9,2,10,3,11,4,12,5,13,6,14,7,15,8,16).
Отсюда следует, что SIDE всегда равно нулю на дискете и регулируется исключительно сигналом SIDE.... вот оно! Если бы раньше это прочитать, сколько бы времени сэкономил :)
Блокирование адресного маркера и сектора аналогично замене CRC.
Прошил эмулятор, закинул на карту Default.trd, в итоге имею Disk Error trk 0, esc 9.
При этом видно, что при обращении к диску A идет чтение с карты, на 8 пане появляется (index) появляются импульсы, на 30 пине (Read Data) появляется что-то похожее на данные. Если обратиться к диску, при отсутствующей карте памяти, то выдает No disk.
Все прозвонил, спаянно верно. В какую сторону копать?:)
Попробуйте назвать файл с маленькой буквы
Пробывал-не помогло(
А не могли бы вы выложить прошивку готовую и образ, с которым у вас все работает.
А то фиг знает-что я там накомпилировал- никогда не сталкивался с arduino.