Распиновка дисковода 5 25
Особенность интерфейса IDE FDD
Сигнальные входы подтянуты к питанию. Напряжение высокого уровня на них означает логический ноль, а низкого – логическую единицу.
Таким образом, чтобы подать логическую единицу на какой-либо контакт, достаточно соединить его с минусом.
Напомню, что нижний ряд контактов и корпус – это минус.
Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128
Назначение разьемов дисководов 3,5 и 5,25 дюйма
Дисковод с джамперами
Распиновка разьема 5,25
Распиновка IBM / PC (обычные ПК):
Примечание: все контакты с нечетными номерами ЗАЗЕМЛЕННЫЕ
Примечание. Направление (стрелка) - относительно дисковода компьютера.
Распиновка дисковода гибких дисков (интерфейс Шугарта):
Примечание. Направление (стрелка) - относительно дисковода компьютера.
На стандартном дисководе гибких дисков нет абсолютно никакой возможности переназначить двигатель по сигналу на другой вывод с помощью перемычек. Следовательно, чтобы иметь независимое управление двигателем для двух приводов, кабель должен обеспечивать это переназначение с традиционной семипроводной скруткой. Если вы подключите дисковод гибких дисков к работе в качестве дисковода A (блок 0) и подключите его к контроллеру IBM PC с помощью прямого кабеля, дисковод будет выбран, когда контроллер попытается включить двигатель дисковода A, но ничего не произойдет и приводной двигатель будет вращаться при включении приводного двигателя BS.
Первоначальный интерфейс Шугарта (из которого давно произошел интерфейс гибких дисков IBM PC) не имеет отдельных сигналов двигателя для дисководов гибких дисков, но имеет всего четыре строки выбора устройства. Я также видел дисководы гибких дисков, которые не включали свои двигатели, если сигнал выбора соответствующего устройства не был установлен на низком уровне. Я предполагаю, что такого рода диски строго следуют оригинальному стандарту Шугарта.
Также многие синтезаторы, у которых есть дисководы, используют стандартную распиновку интерфейса Шугарта. Вот почему после замены неисправного дисковода многие люди спрашивают в Интернете, почему их новый дисковод для гибких дисков не работает при подключении к синтезатору, но отлично работает на их ПК.
То же самое и с классической Амигой. Он использует очень немного измененную распиновку интерфейса Шугарта на материнской плате (другой / MTRON на контакте 4), и привод ПК просто не работает правильно, если / DCD не переназначен на его исходный контакт. Правильно отображенный / DCD достаточно для AmigaOS, но многие треклоадеры (например, X-Copy Pro) требуют сигнала / RDY, который привод должен установить на низкий уровень, когда вращение двигателя стабилизируется. Этот сигнал присутствует на большинстве приводов, но в худшем случае он требует перестановки припаянной перемычки SMD на печатной плате.
У гибкого кабеля 34 провода. На интерфейсном кабеле гибких дисков обычно имеется пять разъемов, хотя иногда их всего три. Они сгруппированы в три набора; один разъем плюс две пары по два в каждой (для стандартного кабеля с пятью разъемами) или три отдельных разъема. Вот как используются разъемы:
Причина, по которой в стандартном кабеле используются пары разъемов для дисководов, заключается в совместимости с различными типами дисководов. Диски 3.5 обычно используют штыревой разъем, в то время как диски 5.25 используют краевой разъем карты. Следовательно, каждая позиция, A и B, имеет два разъема, так что правильный из них доступен для любого типа используемого дисковода гибких дисков. Следует использовать только один из двух разъемов в паре (в любом случае они слишком близко друг к другу, чтобы использовать оба). Ниже показан наиболее распространенный разъем IDC.
Кабели с тремя разъемами встречаются либо в очень старых системах, либо в тех, где производитель пытался сэкономить несколько копеек. Они снижают гибкость настройки; К счастью, при необходимости эти кабели можно заменить напрямую на пятиконтактные.
Вы также заметите странный перекрут кабеля гибких дисков, расположенный между двумя парами разъемов, предназначенных для дисководов гибких дисков. Несмотря на то , что это , как представляется, хак (ну, это на самом деле является хак), это на самом деле правильное построение стандартного флоппи - интерфейсного кабеля. Есть кабели, у которых нет скрутки, и именно они на самом деле нестандартны! Что делает скрутка, чтобы изменить соединение привода на дальнем конце скрутки, чтобы оно отличалось от привода до скрутки. Это сделано для того, чтобы привод на конце кабеля выглядел как A: для системы, а тот, что посередине, как B :.
Вот как это работает подробно. Традиционно в дисководах для гибких дисков использовалась перемычка выбора диска (DS), чтобы настроить дисковод как A: или B: в системе. Затем на интерфейсе гибких дисков использовались специальные сигналы, чтобы сообщить двум дисководам в системе, с каким из них контроллер пытается связаться в любой момент времени. Провода, которые перекрестно соединены скруткой, представляют собой сигналы от 10 до 16 (семь проводов). Из них 11, 13 и 15 являются заземлением и не несут никакого сигнала, поэтому на самом деле есть четыре сигнала, которые инвертируются поворотом. Четыре инвертированных сигнала - это как раз те, которые управляют выбором привода на интерфейсе. Вот что происходит при использовании витого кабеля:
Поскольку сигналы инвертированы, привод после крутки реагирует на команды в обратном порядке, как должен; если его перемычки выбора привода установлены так, что он является устройством A :, он отвечает на команды B: и наоборот.
Можно спросить, зачем понадобилась скрутка. Короче говоря, потому что это позволяло сэкономить время при установке в те дни, когда в машине можно было найти два флоппи-дисковода. Без поворота, чтобы можно было использовать два дисковода гибких дисков, один должен был быть переставлен как A:, а другой как B :. С помощью скручивания можно было оставить их оба соединенными как B :, и то, что было после скручивания, будет отображаться в системе как A: потому что контрольные линии инвертированы. Изменить, какой привод A: а какой B: так же просто, как переключить кабель. В системах только с одним дисководом для гибких дисков следует использовать только разъем после скрученного кабеля. Таким образом, крупные производители могли организовать одинаковую конфигурацию всех своих дискет без необходимости тянуть перемычки при сборке ПК.
Для того, чтобы эта система работала, оба диска должны быть подключены как диски B :. Так как гибкий кабель со скручиванием входит в стандартную комплектацию, эта схема перемычек также стала стандартной. Практически все гибкие диски, которые вы покупаете, поставляются с перемычками как диски B :, так что они будут работать с этой настройкой.
Если вся эта идея похожа на редко используемый протокол выбора кабеля для жестких дисков IDE / ATA, то это потому, что по сути это одно и то же. Жесткие диски IDE / ATA требуют, чтобы вы изменили перемычки главный / подчиненный аналогичным образом, и выбор кабеля был изобретен, чтобы покончить с этим. Разница, как обычно, только в инерции и истории; система дисковода гибких дисков является стандартной, в то время как выбор кабеля никогда не был популярным для жестких дисков.
Некоторые новые BIOS пошли еще дальше. Они включают параметр BIOS, который инвертирует сигналы A: и B: в самом контроллере. Когда этот параметр включен, это позволяет вам перевернуть любой диск A: на тот, который является B :, без необходимости даже открывать корпус. Однако обратите внимание, что это не совместимо со всеми операционными системами: в частности, как Windows NT, так и Linux могут работать неправильно с этим набором функций подкачки, что может вызвать серьезные проблемы при попытке установить операционную систему. Причина этого в том, что настройка подкачки влияет только на то, как BIOS обрабатывает флоппи-дисковод, и сбивает с толку операционные системы, которые обращаются непосредственно к оборудованию.
Судя по всему, есть еще один вариант гибкого кабеля, который используют некоторые производители. В этой настройке на самом деле есть два скручивания кабеля гибкого диска. Привод, помещенный после первого скручивания, посередине кабеля, имеет обозначение A:, как и в случае стандартного кабеля с одинарным скручиванием. Привод, помещенный после второй скрутки, - B :. Второй поворот отменяет действие первого и заставляет разъем на конце кабеля работать так же, как привод, который появляется до поворота в обычном кабеле.
На некоторых материнских платах контакт 3 используется в качестве ключа (отсутствующий контакт), а на некоторых контактах 5 используется в качестве ключа, в то время как на многих материнских платах этот контакт вообще не удален. Все это может вызвать проблемы при использовании кабелей с закрытым отверстием под ключ. Поскольку все нечетные штыри заземлены, нет никаких технических последствий для модификации таких кабелей путем принудительного снятия затвора ключевого штифта.
Примечание. Направление - относительно дисковода компьютера.
Примечание: все нечетные контакты - GND, Ground.
Примечание: может быть Edge-коннектором на старых ПК.
Перемещение считывающей головки
Чтобы сместить головку на один шаг, необходимо подать одиночный импульс на контакт 20. Перемещение производится не по фронту, а по спаду импульса. Дисковод должен быть активизирован (минус на 12 контакт).
Направлением перемещения управляет 18 контакт. Когда он замкнут на минус, то головка перемещается по направлению к центру, в противном случае (по умолчанию), к краю диска.
Поперемещать считывающую головку дисковода просто. Достаточно «пощелкать» минусом по 12 контакту.
Головка способна переместиться на 80 шагов.
Некоторые соображения
Как я уже говорил, можно сделать перемычку на плате дисковода между минусом и 12 контактом. В этом случае свечение светодиода будет постоянным.
Можно подвести к 12 контакту отдельный провод и активизировать дисковод только когда надо «пошуметь» головкой.
Еще один способ, это сделать перемычку на плате между 12 и 20 контактами. Тогда при подаче импульса на смещение головки на 20 контакт, автоматически будет происходить активизация дисковода и светодиод будет подмигивать на каждом шаге перемещения.
Выросло поколение пользователей, которые уже не знают, как им пользоваться и как вообще выглядит этот флопи привод. Когда-то 3,5-дюймовые флопи дискеты были настоящим передовым носителем информации. Во время своего появления они имели высокую плотность записи, сравнительно высокую надежность и компактные размеры (если сравнивать с 5,25-дюймовым предшественником). Но сегодня его место занимает кард-ридер, причём последний, похоже, также собирается кануть в небытие. Хотя, пока существуют устройства, носящие в себе карты памяти для расширения встроенной, ридер будет ещё сидеть в чреве нашего любимца.
CPLx, ну ты бы хоть поиск по форуму запустил что-ли.. всё, это уже обсуждалось, а ты к сожалению умудрился наступить на все какие только возможно грабли. Начни хотя-бы с этого: Что нужно знать об эксплуатации флоппи дисковода?
Выбор активного дисковода и свечение светодиода
Активизация дисковода производится соединением 12 контакта на минус (подача логической единицы). У активного дисковода сразу начинает светиться зелёный светодиод.
Перемещение считывающей головки возможно только если дисковод активизирован.
Проще всего активизировать дисковод с помощью жесткой перемычки между 11 (минус) и 12 (активизация) контактом.
Если 11 контакта (минуса) нет, то 12 контакт придется соединить с любым другим минусовым контактом нижнего ряда гибким проводом.
Ещё один вариант, это разобрать дисковод и сделать перемычку на минус прямо на плате.
Если все флоппики активизировать перемычками на минус заранее, то при построении флопотрона не потребуется к каждому дисководу подводить провод к 12 контакту.
Отрицательная сторона такого решения – светодиоды всех дисководов будут светиться всё время, даже когда они «не играют».
Нумерация дисководов
На один кабель в компьютере можно было повесить два или даже четыре дисковода. Дисководы принято обозначать буквами A, B или как Drive 0, Drive 1, Drive 2, Drive 3.
Дисковод реагирует на команды перемещения головки только тогда, когда он выбран активным. Активность указывается подачей логической единицы на соответствующий пин:
- 6 – для Drive 3
- 10 – для Drive 0
- 12 – дляDrive1 илиB
- 14 – для Drive 2 или A
Специальной перемычкой (при наличии) на дисководе можно задать номер контакта (6, 10, 12 или 14), который будет отвечает за активизацию дисковода, т.е., по сути, присвоить номер (тип) устройству (Drive 0, Drive 1 - B, Drive 2 - A, Drive 3).
Со временем для подключения дисководов придумали кабель с перекрученными у одного из разъёмов проводами (Floppy Disk Drive Cable Twist), а дисководы с перемычками перестали производить.
Все дисководы стали выпускаться с предустановленным производителем типом. Самый распространённый – это Drive 1, он же B.
Один из двух подключенных к Twist-кабелю дисководов сохранял свой тип Drive 1 (B), а второй, за счет перекрутки, воспринимался компьютером как Drive 2 (A).
Мне с трудом удалось отыскать хоть какой-то дисковод с перемычкой. На Sony MPF520 перемычка позволяет назначить дисковод как Drive 1 (B) или Drive 0.
Скорее всего, все найденные вами дисководы будут дисководами типа B (Drive 1), поэтому в дальнейшем повествовании опираться буду только на них.
Поиск
Появилось желание собрать собственный Флопотрон – оркестр из старых флоппи дисководов. Энтузиастами ведется проект Moppy, в рамках которого создана программа и инструкция по дирижированию дисководами посредством Arduino и ПК. Но хочется не просто воспользоваться готовым рецептом, а детально разобраться что и как работает.
Это первая часть цикла про Флопотрон, тут расскажу, как подключить и заставить работать флоппи-дисковод, какие сигналы нужны для управления им. Контроллер Arduino можно на время отложить в сторону, сегодня он не понадобится.
ДЛЯ ПРОДОЛЖЕНИЯ ПРОЕКТА ФЛОПОТРОН НУЖНЫ:
Дисководов 5,25 дюйма + пара дискет
Дисковод 3,5 дюйма марки CHINON FB-354
Немножко дискет 3,5
ПРИМУ В ДАР ИЛИ КУПЛЮ НЕДОРОГО ИЛИ ОПЛАЧУ ПЕРЕСЫЛКУ
ПИШИТЕ НА ПОЧТУ KOBEJIKOV(a)RAMBLER
Включение двигателя
Чтобы запустить двигатель вращающий диск, надо соединить 16 контакт с минусом.
Однако, двигатель работает только тогда, когда в дисковод вставлена дискета.
Можно дискету не вставлять, а зажать отверткой кнопку-датчик.
Как вариант, установить на плату дисковода перемычку, шунтирующую кнопку.
Все проверенные мной дисководы запускают двигатель даже тогда, когда находятся в не активизированном состоянии, т.е. попросту не обращают внимание на уровень 12-го контакта.
Сделай все то же самое, только в 98 виндовсе. Запусти esn и увидишь, как в нем заработает твой дисковод.
Сделай все то же самое, только в 98 виндовсе. Запусти esn и увидишь, как в нем заработает твой дисковод.
Подключение дисковода 5.25 к PC
С пентагона снял дисковод "Электроника МС 5313" 1992 г.
Мать - какая-то Gigabyte с BIOS 1999-2002 годов. Купил шлейф и подключил к матери.
Питание в дисковод врубил такое же как подключается к HDD (такой же разъем).
Перемычки на дисководе не менял (он был А 10 лет назад).
В BIOS установил дисковод А 1.2 Mb 5.25.
Установил драйвер FDInstall.exe.
Винда XP Professional SP2.
В "Мой компьютер" появился дисковод 5.25. При попытке открыть его в дисководе загорается красная лампочка, голова отъезжает на нулевой трек и всё. Мотор не крутится.
Запуск программы MAKETRD.EXE ни к чему не приводит: появляется строка типа "insert disc and press any key", потом я нажимаю any key и прога мгновенно вырубается не запуская при этом дисковод.
Больше всего меня пока смущает что мотор не крутится. В чём может быть причина?
Дисковод 10 лет назад работал нормально, потом я его не использовал.
Что жужжит и крутится?
В дисководе есть мотор, который вращает дискету, и шаговый двигатель, который перемещает считывающую головку. На дискете 80 дорожек, соответственно головка способна сделать 80 шагов.
Нулевая дорожка ближе к краю магнитного диска, восьмидесятая – ближе к его центру.
В музыкальных целях используется перемещение головки, но при желании двигателем тоже можно покрутить.
У меня 4 ре таких дисковода. Читает Teac и самый лучший EPSON. Советские и булгарские читают до середины диска и много глючат. Однако только под 98 виндой происходит сие действо.
Четыре PC'шных дисковода, читающих спековские диски? Я правильно понял? То есть PC'шные дисководы могут читать диски записанные на моём старом флопе (теоретически)?
У меня лет 10 назад был PC'шный диск. Так мой МС 5313 не мог его даже отформатировать. Я тогда подумал, что PC'шные диски, и, как следствие, дисководы в принципе несовместимы с моим МС 5313. Поэтому у меня на этот счет сомнения имеются, и я переспрашиваю.
Win98 ставить очень не хочется. Придется форматировать половину винта под FAT32 (у меня NTFS под Win2K и XP). Это жесть будет. Попробую конечно, но это будет в последнюю очередь, ибо это слишком хлопотно.
Добавлено через 17 минут
CPLx, ну ты бы хоть поиск по форуму запустил что-ли.. всё, это уже обсуждалось, а ты к сожалению умудрился наступить на все какие только возможно грабли. Начни хотя-бы с этого: Что нужно знать об эксплуатации флоппи дисковода?
Поиск юзаю уже дня 4. Но в железе я полный ламер, так что это закономерно в моём случае.
Я так понял, что надо что-то сделать с 34-м контактом? Провод что-ли обрезать? И как этот 34-й контакт найти (если дело в нём), откуда отсчитывать? Объясни пожалуйста подробнее. Можно ли вообще решить мою проблему в принципе, как это сделать и т.д. Самому мне очень трудно разобраться, я в технике ноль.
Комментарии публикую с постмодерацией. Извините, иногда бывают задержки.
Флопи . Годами ранее.
А раньше многие компьютеры оборудовались двумя дисководами, которым назначались буквы A и B. В большинстве случаев один был 5.25» (вообще динозавр, сошёл на «нет» моментально). Нужен был механизм определения, какой из них будет A, а какой B. На выходе из материнской платы по 10-му и 14-му проводам шлейфа на флопповоды идут управляющие сигналы для дисковода A, а по 12-му и 16-му — для B. Потом в один прекрасный момент (следующий после первого разъема для подключения привода) наступает то, что в научной литературе называется «twist», и все провода с 10-го по 16 переворачиваются, и к ни о чем не подозревающему второму разъему шлейф приходит в состоянии, в котором по 10-му и 14-му проводам идут команды дисководу B (потому что это на самом деле 12-й и 16-й провода!), а по 12-му и 16-му соответственно — к дисководу A (по той же самой причине). Таким образом, шлейф вводит в заблуждение (чтоб не сказать хуже) второй дисковод, который, думая, что он A, работает как B, и наоборот. Все дисководы идут с джампером, предустановленным в режим работы B, таким образом, при установке двух дисководов на этот волшебный шлейф, у тебя автоматически один становится A (который в конце), а другой — B.
Обратите внимание. В таблице представлены только контакты чётные. Для нечётных всё просто: они «садятся » на корпус.
Питание дисковода FDD
Дисковод требует напряжения в 5 В. Запитать флоппик можно от компьютерного блока питания. Чтобы запустить блок питания, нужно на самом длинном разъеме перемкнуть контакт зеленого и любого из черных проводов.
Если вы впервые так «заводите» блок питания, то настоятельно рекомендую прочитать в интернете инструкцию на эту тему.
Ни в коем случае, не включайте блок питания компьютера без нагрузки!
Питание к дисководу подводится через четырехконтактный разъём (Mate-N-Lock). Чёрные провода – это минус, красный – +5 В, жёлтый – +12В. Напряжение в двенадцать вольт в дисководе не используется, поэтому соответствующий контакт впаян в плату, но ни к чему не подключён.
Для проведения экспериментов, мне оказалось комфортнее запитать дисковод от внешнего блока питания для жёсткого диска. Воспользовался переходником с Molex на Floppy. Такие переходники еще потребуются, поэтому рекомендую их подкупить заблаговременно.
На фотографии видно, что для питания действительно достаточно только двух проводов: +5 В (красный) и минус (чёрный).
Распиновка интерфейса IDE FDD
Разъём интерфейса 34-пиновый, но на практике не все контакты нижнего ряда могут быть установлены.
Нижний ряд может быть и почти совсем «беззубым» (зависит от конкретной модели), нам не принципиально.
В общем случае, нижний ряд (нечетные контакты) – это минус (Ground), верхний ряд (чётные контакты) – сигнальные линии.
В разных документах описывается как минимум два варианта распайки разъема IDE FDD.
Вариант первый
Контакт | Сигнал | Контакт | Сигнал |
2 | М/С | 20 | Step Pulse |
4 | N/C | 22 | Write Data |
6 | N/C | 24 | Write Enable |
8 | Index | 26 | Track 0 |
10 | Motor Enable А | 28 | Write Protect |
12 | Drive Select В | 30 | Read Data |
14 | Drive Select A | 32 | Select Head 1 |
16 | Motor Enable В | 34 | (Spare) |
18 | Stepper Direction |
Вариант второй
Контакт | Сигнал | Контакт | Сигнал |
2 | Reduced Write | 20 | Step |
4 | Reserved | 22 | Write Data |
6 | Drive Select 3 | 24 | Write Gate |
8 | Index | 26 | Track 0 |
10 | Drive Select 0 | 28 | Write Protect |
12 | Drive Select 1 | 30 | Read Data |
14 | Drive Select 2 | 32 | Side 1 Select |
16 | Motor On | 33 | Diskette Change |
18 | Direction Select |
Не указанные в таблицах контакты – это минус (Ground)
или же контакт отсутствует или не подключён.
Контакты нижнего ряда замкнуты на минус (общий провод). Исключения могут составить не подключённый 1 и сигнальный 33 контакты. 34 контакт верхнего ряда также может быть минусовым. Корпус дисковода также, как правило, замкнут на минус. Всё это зависит от конкретной модели флоппика. Всегда можно воспользоваться тестером и определить минусовые контакты конкретного экземпляра.
Поскольку флопотрон не будет задействовать функционал по записи и считыванию данных, то необходимости разбираться в назначении абсолютно всех контактов интерфейса смысла нет.
Нам интересны только несколько контактов:
Контакт | Сигнал | Значение |
12 (6, 10, 14) | Drive Select | Активизация привода |
18 | Direction Select | Смена направления движения головки |
20 | Step | Импульсы смещения головки |
16 (10) | Motor Enable | Включение двигателя вращения диска * |
* Двигатель вращения диска громких звуков не производит,
поэтому в флопотроне он задействован не будет.
Документация назначения контактов разъемов шлейфа дисководов.
У меня 4 ре таких дисковода. Читает Teac и самый лучший EPSON. Советские и булгарские читают до середины диска и много глючат. Однако только под 98 виндой происходит сие действо.
Наконец-то подключил дисковод так чтобы можно было читать диски. Это было такое шаманство, которого наверное не было еще никогда у меня в жизни.
На всякий случай напишу здесь как это мне удалось, может когда-нибудь опять мне это понадобится и может кому-то будет интересно. Потому что многие кому удается подключить не пишут как это у них получается, и я тоже не написал в своё время. И то, что я не описал, как это было сделано, я считаю ошибкой, которая наверняка привела к потере времени в этот раз.
- Мат. плата 2010 года Gigabyte GA-X58A-UD5. Есть разъем для подключения FDD. Плата поддерживает только один дисковод, о чём даже написано в мануале и видно из BIOS по невозможности настраивать драйвы отличные от A.
- Дисковод Электроника МС 5313 1992 года. Контакт 34 заклеен изолентой. Перемычка замкнута так чтобы он был первый (B).
- Windows 7 SP1 x64.
Дисковод я подключил после скрутки на кабеле - так у него запустился двигатель. Подключение до скрутки приводило к тому что мотор не работал. В остальном никаких особенностей физического подключения нет (кроме заклеенного 34 контакта и положения перемычки).
Загрузка Винды делается по F8 с выбором пункта Disable Driver Signature Enforcement, чтобы Винда не отключала драйвер, т.к. он не подписан. В WinXP в этом не было необходимости, а в Win7 есть.
Сам факт успешного прочтения каталога программой ZX Disk Studio натолкнул меня на мысль, что контроллер и дисковод работают нормально, а невозможность прочитать остальные треки проистекает из софта. Поэтому я решил написать свою программу чтения используя всё тот же драйвер. Но у неё оказалась та же проблема: читает только нулевой трек, а остальные драйвер читать отказывался выдавая различные ошибки, впечатление было что они случайные и смысла не несут (21 - The device is not ready, 23 - Data error (cyclic redundancy check), 27 - The drive cannot find the sector requested, 1122 - No ID address mark was found on the floppy disk). 21-я была самой абсурдной из них (позже оказалось что такая ошибка возникает скорее всего когда драйвер не может увидеть формат на диске, т.е. видит его как неформатированный). Я решил что причиной является проблема в драйвере и что придется писать драйвер самому, уже даже стал читать документацию по контроллерам.
Пару дней назад я склонялся к тому что вся моя идея по подключению не удалась и собирался всё бросить. Удалил новый драйвер, поставил старый (версии 1.0.0.19), и решил проверить как моя программа будет читать с ним. И вдруг оказалось что она прочитала первый трек (16 секторов, точнее; все треки я читал посекторно). Потом она прочитала трек на ненулевом цилиндре, по-моему на пятом или десятом, - то, что раньше не получалось сделать. Поняв что я теперь могу прочитать весь диск, я по-быстрому, на всякий случай не перезагружая Винду, написал цикл чтения всего диска и наконец-то это всё стало работать: старый драйвер на моей плате оказался способен прочитать диск. Новый - нет. Он имеет явно другое поведение, это видно даже по характеру позиционирования. Я уже потом устанавливал его снова и проверял как работает на нём уже протестированный код, и оказалось что лишь изредка ему удается прочитывать сектора вне нулевого трека, мне на глаза попалось только 2 таких случая.
По поводу долбления головки в нулевой трек. С какого-то момента головка стала долбиться не всегда, иногда она доезжает до нулевого трека и корректно останавливается. Поэтому сигнал TR00 там есть и контроллер его видит. Почему иногда TR00 виден, а чаще всего нет, так и осталось загадкой. Головка у меня по-прежнему долбится в нулевой трек, за редкими исключениями. Но диски читаются. В драйвере не оказалось функции шага назад и шага вперед, с которыми можно было бы избавиться от большей части долбления даже при отсутствии сигнала TR00, поэтому приходится это всё терпеть. Вообще, драйвер оказался не таким низкоуровневым как хотелось бы. Он даже принудительно гонит головку на нулевой трек при попытке обычного чтения сектора, хотя его никто об этом не просит (он так делает если предыдущее чтение дало определенную ошибку). В большинстве случаев он после этого не позиционирует головку на нужный трек, после чего пытается прочитать например десятый трек в нулевом положении головки. Это у меня превратило чтение плохо читающихся дисков в ад.
Итого, мои выводы о причинах когда что-то не работает:
- Проблема может быть в драйвере. Он может не соответствовать контроллеру FDD на мат.плате. Если что-то не работает, то вероятно драйвер не подходит и работает с контроллером неправильно. Можно конечно обвинять железо в том что оно не подходит драйверу, но драйвер редактируется гораздо проще железа.
- Проблема может быть в программе читающей диск через драйвер. Даже с драйвером который в принципе может прочитать диск на имеющемся железе, некоторые программы не могут это сделать почему-то, т.е. не могут использовать возможности драйвера. Хотя на другом железе и операционной системе эти же программы могут нормально работать через тот же драйвер.
Несмотря на то что в других темах есть много обвинений в адрес железа и операционной системы, я проблем конкретно с этим не увидел, а видел что причина почти наверняка в софте: драйвере и программе чтения. В моём случае она в софте и оказалась, причем сразу в обоих этих местах.
Еще надо отметить важность чистоты головок. У меня много дисков оказались пыльными и головки загрязняются быстро и настолько, что один отлично читающийся диск перестает читаться полностью пока не промыть их. Когда у меня перестал читаться каталог я думал что я сделал что-то не так с настройками, пока не промыл головки и не увидел что всё снова стало читаться. Засоряются наглухо, так что создается впечатление что нарушилось подключение дисковода. По крайней мере с моими дисками, условия хранения которых были довольно мрачными.
То, что заработало:
- Драйвер версии 1.0.0.19. Подошел к моей плате. Версия 1.0.1.11 не подходит, он может прочитать только нулевой трек, а в остальных местах диска чтение удается крайне редко, непонятно по какой причине.
- Мой код чтения диска. Использует обычные функции драйвера, которые описаны в его документации и взяты прямо из примеров копи-пастом. То есть ничего особенного. Конкретно используется функция чтения сектора.
- Скорость передачи данных 250кбит/сек, метод MFM.
- В BIOS дисковод установлен как 3.5" 720K. Но это ничего не меняло у меня. Всё хорошо работало при любом типе дисковода, по крайней мере в моей программе (а вот у ZX Disk Studio была разница, поэтому в принципе этот параметр может оказывать влияние).
UPD (22.04.2020):
Драйвер версии 1.0.1.11 мне всё-таки удалось запустить. То что я подумал что он работает плохо могло быть вызвано плохо читающимися дисками. Хотя я отдельно, и, как мне казалось, хорошо проверял это, но похоже недостаточно хорошо.
Читайте также: