≡ Передовица » Hardware » ДЗУ » Исследование КНГМД 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 МГц. Остальные частоты и интервалы подвержены этой же поправке. Дальше идут отдельные большие разделы:
Официальное по контроллеру (и немножко иных файлов неопределённой ценности)Официальная документация находятся на страничке Контроллеры 840Кб ВАЖНО: в первой версии схемы нумерация деталей отличается от второй и третьей ! Обычно, описания по программированию ссылаются на вторую или третью версии. Чтобы понять, к какой версии относится документ, нужно знать следующее: в описаниях регистров упоминаются микросхемы 580вв55. Если они названы D14 и D15 - это вторая или третья версия. Если D17 и D18 - это старый документ по первой версии. Фрагмент документации по программированию контроллера. Две версии: оригинал DJVU и распознанный и тщательно проверенный практикой текст. Изложение материала заметно отличается от ФГ3.032.002 ТО7. Текст крайне полезный тем, что тут от начала до конца описан программный интерфейс контроллера. Ни убавить ни прибавить. Цветной DJVU: 360 Кб; распознанный текст: 10 Кб. Принципиальная схема, версия третья. Нарисована самостоятельно, криво, но достаточно внятно, чтобы отремонтировать по ней несколько контроллеров. Карандашом показаны отличия от для второй версии. Позиционные номера микросхем взяты с потолка. Рисовалась до того, как удалось добыть официальные схемы. Ныне оставлена, в основном, на всякий случай. Первая страница: входные цепи - системная шина и селектор адресов, который коммутирует различные
части контроллера с системной шиной при обращении ЦПУ к контроллеру. На моих схемах нет двух микросхем - кр580вв55а. Но все линии, которые к ним идут, показаны, например, так: "19.B4 \\ D14" - значит, кристалл D14, лапка 19, 4-й бит порта B. Либо так: "D14.C7" - это кристал D14, 7-й бит порта C. И ещё: из-за ошибки у меня получилось две микросхемы D6, поэтому одна из них позднее была переименована в D6'. Цветной DJVU: 1.2 Мб. В нескольких коллекциях нам встречался текстовый файлик (иногда этот файл назывался "MFM Филипова"). Это расшифровка программы секвенсора, но с моими расшифровками она немного не совпадает (в районе режима записи). Возможно, эта версия использовалась с железом первой версии. Возможно, алгоритмически она такая же, но заточена под другое железо. Небольшая программа на агатовском бейсике, моделирующая работу секвенсора в режиме чтения. Мне неизвестны ни автор программы, ни как ей пользоваться, ни правильно ли она работает. Либо её написали при попытке разобраться в работе автомата и тогда она имеет не очень много пользы. Либо её писал сам А.Филиппов, во время работы над контроллером и тогда она могла бы рассказать что нибудь интересное. Заметьте - это полуфабрикат: как минимум, для её работы нужно загрузить в ОЗУ прошивку секвенсора с адреса ¤6000 и что-то ещё интересное должно быть в ячейке ¤1258. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |