ПЭВМ Агат » Документация, книжки, статьи, размышлизмы » Кусочки и срисовки » Описание контроллера дисковода 840 кб

Описание контроллера дисковода 840 кб

Этот текст - результат долгих ковыряний и проверок, но, как обычно, напоминаю:

! Текст не может считаться истинной в последней инстанции ! Маловероятно, что кто-то попытается проверить написанное здесь, поэтому даже простые ошибки могут долгое время оставаться неисправленными.

Контроллер 840-ки - пожалуй, самый сложный для анализа агатовский блок. Во всяком случае из тех, в которых я ковырялся. Что ещё хуже - его ошибки (или ошибки его программирования) могут быть приняты за сбои дискеты и понять - кто виноват - может быть сложно. В то же время - это очень изящный блок. Я не представляю себе, как его могли задумать таким и как авторам удалось отладить его работу - как программу секвенсора так и железо. В конце концов я решил написать небольшой, не очень технический, рассказ о том, как происходило изучение этой железки. Он помещён первым разделом в конце этой страницы.

Версии железа контроллера

Их существует минимум три. Первая версия у нас есть в виде схемы и в виде монтажной платы. Но живьём её никто из нас не видел. И нет фотографий. Её особенность состоит в том, что микросхема ПЗУ начальной загрузки работает через микросхему параллельных портов 580вв55, в то время как во второй и третьей версии ПЗУ подключено напрямую на шину ЦП через буферную микруху. Разъём дисковода с непривычной стороны. Каких либо других существенных отличий, во всяком случае в обрабтке данных, там не обнаружено.

Вторая и третья версии отличаются друг от друга только введением дополнительного формирователя сигнала записи (вторая версия выдаёт импульс длительностью около 250 нс, третья версия - 1 мкс). Под формирователь импульса занята микросхема 155аг3, которая во второй версии входила в формирователь частоты 4 МГц. В третьей версии её функцию в формирователе 4 МГц заменили несколькими свободными логическими элементами. Это изменение, скорее всего, было необходимо для некоторых моделей дисководов и/или для улучшения помехозащищённости. Обе версии собирались на одинаковых печатных платах, но у третьей версии больше десятка напаянных проводов.

Есть вероятность, что программа секвенсора в первой версии отличается от второй и третьей версий. Но так как мне доступна только вторая и третья версии контроллера, всё описанное относится именно к ним.

В дальнешем я так буду писать: "первая версия", "вторая версия", "третья версия". Это - моя собственная нумерация, подтверждённых официальных названий для всех трёх версий у меня нет.

Версии ПЗУ начальной загрузки

Их просто несколько, минимум две. В чём отличия - никто серьёзно не ковырялся, скорее всего просто оптимизация кода. Но версий может быть и больше: дело в том, что в коде есть небольшой пустой участок, примерно со смещения ¤50 по ¤5B, в котором попадается сигнатура автора "(C)PHILIPPOV" или "(C) PHILIPPO". Андрей Филиппов - инженер, разработавший 840-ку. Так же не забывайте, что последние 4 байта являются расширенной сигнатурой контроллера: ¤01 ¤02 ¤34 ¤02. Но могут быть и ¤FF FF FF FF, например, в ранних версиях контроллера.

840-ка одинакого успешно работает как в 7-й так и в 9-й архитектуре Агата.

Немного о таймингах

Я пишу везде округлённые числа: 4 МГц, 250 нс и т.д. Но нужно помнить, что все тактовые частоты идут от системного кварца: 14.3 МГц. 4 МГц получается делением системного кварца на 7 и умножением на 2. Таким образом основная тактовая частота контроллера - 4.09 МГц. Остальные частоты и интервалы подвержены этой же поправке.

Дальше идут отдельные большие разделы:

  • Немного лирики и истории. Сперва мне хотелось поместить сей текст в начале этой страницы, но он получился весьма долгим и от того был вынесен в отдельный раздел.
  • Общий обзор. Здесь собраны простые части: интерфейс с системной шиной, умножитель тактовой частоты, формирователи вспомогательных сигналов дисковода и всякое такое.
  • Формат MFM. Немалая сложность разбора связана с самим форматом записи. Если 140-ка использует Group Code Recording (GCR), процедуры кодирования и декодирования которого реализованы в драйвере дисковода, то в 840-ке используется Modified Frequency Modulation (MFM) и сложность контроллера обусловлена тем, что кодирование и декодирование MFM происходит именно в контроллере. Вы легко можете найти описание MFM в интернете, но в этом разделе я опишу особенности агатовской реализации MFM. Кроме того, не все найденные описания MFM мне понравились и я попробовал развернуть этот вопрос подробнее.
  • Секвенсор и канал обработки данных. Общее описание секвенсора. Здесь мы ознакомися с его схемой в общих чертах. Так будет проще понять следующие разделы.
  • Автомат кодирования и предкомпенсации записи. И программа его обслуживания секвенсором.
  • Программа декодирования данных чтения. И графическая диаграмма её работы.

Официальное по контроллеру (и немножко иных файлов неопределённой ценности)

ВАЖНО: в первой версии схемы нумерация деталей отличается от второй и третьей ! Обычно, описания по программированию ссылаются на вторую или третью версии. Чтобы понять, к какой версии относится документ, нужно знать следующее: в описаниях регистров упоминаются микросхемы 580вв55. Если они названы D14 и D15 - это вторая или третья версия. Если D17 и D18 - это старый документ по первой версии.

Фрагмент документации по программированию контроллера. Две версии: оригинал DJVU и распознанный и тщательно проверенный практикой текст. Изложение материала заметно отличается от ФГ3.032.002 ТО7. Текст крайне полезный тем, что тут от начала до конца описан программный интерфейс контроллера. Ни убавить ни прибавить.

Ещё один вариант официальной документации. Тут и программирование и описание конструкции. Не сильно проверена, но зато тут несколько абзацев посвящены тому, как, собственно, устроен и работает контролллер. Три, реально интересных, подраздельчика (где-то в конце части 1).

Сборочный чертёж, первая версия, ЯБ3.089.023СБ. Официальный.

Принципиальная схема, первая версия, ЯБ3.089.023Э3. Официальная.

Принципиальная схема, вторая версия, ЯБ3.089.023-01Э3. Официальная. Отличное качество !

Принципиальная схема, вторая версия, ЯБ3.089.023-01Э3. Официальная. Скорее всего, это копия предыдущей схемы, полученная из другого источника. Мне не удалось найти между ними различий.

Принципиальная схема, версия третья. Нарисована самостоятельно, криво, но достаточно внятно, чтобы отремонтировать по ней несколько контроллеров. Карандашом показаны отличия от для второй версии. Позиционные номера микросхем взяты с потолка. Рисовалась до того, как удалось добыть официальные схемы. Ныне оставлена, в основном, на всякий случай.

Первая страница: входные цепи - системная шина и селектор адресов, который коммутирует различные части контроллера с системной шиной при обращении ЦПУ к контроллеру.
Вторая страница: то же самое + выходные цепи - буферные схемы интерфейса с дисководом.
Третья страница: схема канала кодирования/декодирования данных. Четвертая: подписи номеров микросхем на плате. Там высокое разрешение, так что видны и точные названия кристалов.

На моих схемах нет двух микросхем - кр580вв55а. Но все линии, которые к ним идут, показаны, например, так: "19.B4 \\ D14" - значит, кристалл D14, лапка 19, 4-й бит порта B. Либо так: "D14.C7" - это кристал D14, 7-й бит порта C. И ещё: из-за ошибки у меня получилось две микросхемы D6, поэтому одна из них позднее была переименована в D6'.

В нескольких коллекциях нам встречался текстовый файлик (иногда этот файл назывался "MFM Филипова"). Это расшифровка программы секвенсора, но с моими расшифровками она немного не совпадает (в районе режима записи). Возможно, эта версия использовалась с железом первой версии. Возможно, алгоритмически она такая же, но заточена под другое железо.

Небольшая программа на агатовском бейсике, моделирующая работу секвенсора в режиме чтения. Мне неизвестны ни автор программы, ни как ей пользоваться, ни правильно ли она работает. Либо её написали при попытке разобраться в работе автомата и тогда она имеет не очень много пользы. Либо её писал сам А.Филиппов, во время работы над контроллером и тогда она могла бы рассказать что нибудь интересное. Заметьте - это полуфабрикат: как минимум, для её работы нужно загрузить в ОЗУ прошивку секвенсора с адреса ¤6000 и что-то ещё интересное должно быть в ячейке ¤1258.

Автор раздела: Garnizon