Про платы XT-IDE и XT-CF

ISA IDE

XT-IDE rev 02

Плата XT-IDE даёт возможность подключать (относительно) современные жёсткие диски IDE или CF-карты памяти к старым компьютерам IBM PC XT и совместимым. Она устанавливается в 8-битный ISA-сокет и не требует установки каких-либо драйверов для работы, т.к. имеет на борту свой собственный BIOS, который можно настроить под конкретное железо (от режима максимальной совместимости с XT-системами до максимальной скорости работы на более современном железе). Также на плате есть последовательный порт (опциональный), предназначенный для загрузки системы с файла-образа диска, расположенном на другом компьютере. Последнее крайне полезно, когда надо установить систему, а под рукой нет ни дисковода с системной дискетой, ни системного HDD.

В качестве BIOS-а рекомендуется использовать EEPROM 28C256 (также можно использовать менее ёмкую 28C64), тогда для записи и обновления прошивки не потребуется программатор - это можно сделать через DOS-утилиту.

Девайс поддерживает диски и карты памяти любых размеров (но не забываем про ограничение, накладываемое операционной системой. Например MS DOS 6.22 поддерживает диски не более 8.4 Гб). Всего к плате можно подключить два диска.

Сборка

Гербер-файлы можно скачать по ссылке внизу статьи. Платки с синей паяльной маской и покрытием иммерсионным золотам получились вот такие:

Печатная плата XT-IDE

Сборка платы не должна вызывть сложностей, все элементы подписаны шелкографией. Если не нужен опциональный UART, то микросхемы U11 - U13, их обвязку (конденсаторы и резистивную сборку) и кварцевый генератор можно не устанавливать. Кстати, о резистивных сборках - плата спроектирована под 10-пиновые сборки из 9 резисторов, но, т.к. последний резистор не используется, то сгодятся 9-выводные сборки (которые, как оказалось, гораздо проще достать).

Ещё один момент - резистор R6, который можно/нужно заменить перемычкой. Если жёсткий диск будет подключен как Master или Slave, то резистор можно оставить. Если же планируется использовать режим Cable select, то вместо резистора лучше запаять перемычку. Либо внести соответствующее изменение в плату. Хотя, лично у меня винчестер успешно определялся и работал в режиме Cable select с запаяным резистором.

Вот что получилось у меня в итоге:

Собранный контроллер XT-IDE

Установка джамперов

Для успешного запуска адаптера надо установить множество джамперов. Вот их расположение на плате:

Расположение джамперов XT-IDE

Для начала надо сконфигурировать ПЗУ BIOS-а выбрав её тип (рекомендуется использовать 32-килобайтовую Atmel 28C256, но 8-килобайтовая 28C64 тоже сгодится) и задав адрес.

Настройки ROM BIOS

Джампер JP1 должен быть установлен, чтобы BIOS платы запускалась при старте системы. Джампер JP2, разрешающий программирование EEPROM-а, рекомендуется устанавливать только в случаях, когда реально планируется записывать/перезаписывать BIOS. В противном случае, есть риск повреждения содержимого ПЗУ, если какая-нибудь программа решить обратится к этим адресам.

Джамперами P10 задаётся базовый адрес интерфейса (по умолчанию 300h)

Настройки базового адреса

А джамперами P4 выставляется номер IRQ:

Настройки IRQ

Джамперы K4 / K5 задают режим работы. Если выставить оба в верхнее положение - скоростной режим, если в нижнее - режим совместимости. Для начала лучше настроить режим совместимости, затем, в случае успеха попробовать Hi-speed mode.

Для UART-интерфейса (если он присутствует) также надо настроить базовый адрес и номер IRQ:

Настройки адреса UART
Настройки адреса UART

Джампер P9 включает подачу питания +5В на 20й вывод IDE-разёма. Его имеет смысл установить в случае использования карты памяти CF вместо жёсткого диска.

Прошивка и конфигурирование

Сначала надо скачать прошивку (ссылки ниже в конце статьи). Последняя версия - R580. В архиве есть восемь вариантов бинарника:

ide_xt.bin
Сборка использует только процессорные инструкции, поддерживаемые 8086/8088. Этот билд должен работать везде, включая оригинальный IBM PC model 5150.
ide_xtp.bin
Сборка XT+. Аналогична сборке XT но использует инструкции 80186/80188 (INS и OUTS), повышающие скорости переноса данных. Эти инструкции поддерживаются всеми более поздними x86 включая NEC V20/V30.
ide_xtl.bin
Сборка XT large. Сборка XT с дополнительными модулями (см. далее). Требует 32кб ПЗУ.
ide_xtpl.bin
Сборка XT+ large. Сборка XT+ с дополнительными модулями (см. далее). Требует 32кб ПЗУ.
ide_tiny.bin
Сборка XT tiny. Аналогична XT-сборке, но более компактная (умещается в 4кб) за счёт того, что использует сжатые строки и отключает некоторые функции проверки. Для XT-IDE / XT-CF не иммет смысла.
ide_at.bin
Сборка для AT-машин (с 16- и 32- разрядной шиной). Использует 286 инструкции. Самая полная версия, содержит все фичи BIOS-а. Включает перехваты системных вызовов, позволяющие операционной системе выполнять некотрую работу в то время, когда HDD занят позиционированием головок на нужный сектор.
ide_atl.bin
Сборка AT large. Сборка AT с дополнительными модулями (см. далее). Требует 32кб ПЗУ.
ide_386.bin
Сборка для 386 и выше. Аналогично сборке AT включает весь возможный функционал, но использует некоторые 386-е инструкции.

Large-сборки

Large-сборки включают дополнительно следующие модули: MODULE_BOOT_MENU, MODULE_8BIT_IDE_ADVANCED и MODULE_COMPATIBLE_TABLES.

MODULE_BOOT_MENU
Загрузочное меню, позвоялет выбрать диск для загрузки.
MODULE_8BIT_IDE_ADVANCED
Поддержка DMA и memory mapping. Повзоляет в несколько раз увеличить скорость обмена за счёт использования DMA. Используется контроллерами Lo-tech XT-CF и JR-IDE
MODULE_COMPATIBLE_TABLES
Включение поддержки таблиц DPT (Drive Parameter Tables). Это таблицы в памяти, содержащие данные о дисках - начиная от геометрии диска (количество байт в секторе и кластере) и заканчивая именем текущей директории. Некоторый софт использует их в своей работе напрямую (что вообще говоря, совсем не есть правильно).

Но после выбора файла BIOS-а нельзя просто так взять и записать его, сначала это дело надо сконфигурировать. Делается это утилитой xtidecfg.com, входящей в состав архива. Запускаем конфигуратор:

утилита конфигуратора xtidecfg.com

Открываем нужную сборку, после чего в меню появятся пункты конфигурации и запись в EEPROM:

утилита конфигуратора xtidecfg.com

В меню присутсвует команда Auto configure, которая попытается сама определить параметры устройства.

утилита конфигуратора xtidecfg.com

В первую очередь надо выставить базовый адрес так, чтобы он совпадал с адресом, выстаавленным джамперами:

утилита конфигуратора xtidecfg.com

Ещё тут есть с десяток разных опций, которыми можно поиграться:

утилита конфигуратора xtidecfg.com
утилита конфигуратора xtidecfg.com

В нижней части меню показываются подсказки к каждому элементу. Кроме того, клавшией F1 можно открыть окно с более подробным описанием параметра:

утилита конфигуратора xtidecfg.com
Base (cmd block) address
Базовый адрес - адрес, по которому располагаются порты команд. По умолчанию первичный контроллер IDE использует порт 1F0h, а вторичный контроллер - порт 170h. XTIDE по умолчанию использует порт 300h.
Control block address
Блок портов управления. Для контроллеров IDE обычно используется базовый адрес + 200h. Для XTIDE блок регистров управления располагается сразу после блока регистров команд, т.е., по адресу базовый + 8h.
Enable interrupt
IDE контроллер может использовать прерывания чтобы сообщать о том, что данные готовы и могут быть прочитаны. Это позволяет системе выполнять полезныю работу пока контроллер занят. Эта возможность не сильно полезна в однозадачной MS-DOS, но использование прерываний освобождают шину для других операций DMA. Если прерывания запрещены, то используется режим опроса (Polling mode), когда система циклически опрашивает контроллер пока не получит признак готовности данных. В MS-DOS режим опроса может немного повысить скорость работы, т.к. позволяет избежать накладных расходов на прерывания. Однако, если прерывания выключены и включен Block mode transfers, то возможны проблемы с некоторыми старыми HDD.
IRQ
Номер канала IRQ. В MS-DOS все контроллеры, работающие под управлением XTIDE Universal BIOS могут использовать один и тот же канал IRQ. Другие операционные системы могут потребовать выделения каждому контроллеру свой собственный IRQ.
Block mode transfers
Режим блочной передачи может увеличить скорость работы за счёт того, что сразу несколько секторов будут переданы во время ожидания запроса на следующую порцию данных. Эту опцию имеет смысл всегда оставлять включенной. Выключать её надо только если используются HDD, в которых криво реализован режим блочной передачи.
User specified CHS
Вообще, контроллер может автоматически определять геометрию диска. Но если операционная система не может работать с дисками большого объёма, то можно вручную ограничить для неё количество секторов - Cylinders. При этом лучше не трогать параметры heads и sectors per track - тут не все значения допустимы.

Обновить BIOS контроллера можно прямо из утилиты конфигуратора. Экран программатора выглядит так:

утилита конфигуратора xtidecfg.com - запись в EEPROM

Тут выбирается тип микросхемы EEPROM (2816, 2864, 28256 или 28512). Размер страницы можно оставить 1 байт - все микросхемы EEPROM поддерживают побайтовый режим. При большем размере скорость записи будет выше, но возможны проблемы. Режим SDP (Software Data Protection) имеет смысл включать только если EEPROM его поддерживает (смотреть по даташиту).

XT-CF-Lite V4

XT-CF-Lite - упрощённая версия контроллера XT-IDE для подключения CF-карты вместо HDD. Её описание, схему, герберы и прошивку можно скачать с сайта автора.

Тут используется ПЗУ на 8 КБ (рекомендуется EPROM 28C64 чтобы можно было обновлять прошивку). Резистор R5 на плату впаивать не надо. Девайс этот достаточно прост и запускается обычно без проблем, если нет ошибок в монтаже. Так выглядит мой вариант собраной платы и рабочая, проверенная на нескольких компьютерах, конфигурация микропереключателей:

XT CF Lite

В завершение небольшое предостережение - платы восьмибитные, и, при остуствии задней планки, вставить их в ISA слот можно как правильно, так и вверх ногами. В последнем случае обоим девайсам может быстро и необратимо поплохеть - печальная практика показала, что при перевёрнутом включении у них моментально выходят из строя ПЗУ. Дело усугубляет то, что у IDE-контроллера разъём HDD расположен как бы спереди, а у CF-контроллера разъём карты расположен как бы сзади. И, когда привыкаешь вставлять одну карту (CF или IDE), то и другую плату можно по инерции воткнуть так же, ориентируясь по разъёму. Сам убил так пару флешек у IDE-карты, и слышал о аналогичной беде с CF-адаптером.
Вообщем, это, будьте осторожны! :)

Файлы

DownloadGerber-файлы платы ISA XT-IDE V2
DownloadНабор прошивок и конфигуратор версии R580 (последняя на момент написания статьи)
DownloadГотовая настроенная прошивка ide_xtl для ISA XT-IDE

Ссылки

Страница проекта ISA XT IDE
Скомпилированные прошивки
Документация по прошивкам
Репозиторий на github
XT-CF-Lite V4.

Rating: 
0
No votes yet