|
IDEHDD
IDE-контроллеры и винчестеры для УКНЦ
Featured IDE-контроллер для УКНЦ -- это плата расширения для вставки в разъём расширения, в качестве корпуса для устройства обычно использовался корпус КМД УКНЦ с подпиленной верхней частью. Винчестер ноутбучного формата прикреплялся прямо к печатной плате. Разработка относится к 1994-1995 годам -- судя по информации из загрузчика.
Схема ПЗУ в IDE контроллере довольно забавная. Там припаяны в параллель К573РФ5 (8*2Кб) младший байт и К155РЕ3 (8*32 байт) старший байт. В результате нижние 64 байт (32 слов) -- правильные, а дальше начинается каша из содержимого РФ5 (верного!) и повторяющегося содержимого РЕ3 (мусор). Но к счастью в нижних 32 словах сидит "загрузчик" который переносит побайтовое верное содержимое из РФ5 в память ПП, регистрирует хэндлер и запускается там. (Источник: AlecV, http://zx.pk.ru/showpost.php?p=254244&postcount=41) Адресное пространство контроллера винчестера входит в окно 100000-117777. Подключается контроллер сбросом бита 0 в регистре 177054 (он отключает одновременно системное ПЗУ в диапазоне 100000-117777), и установкой или сбросом бита 3 в том же регистре (указывает номер слота). Само загрузочное ПЗУ расположено в диапазоне 100000-107777. В диапазоне 110000-117777 расположены регистры IDE. Собственно сама шина QBUS инверсная, поэтому инверсны и адреса IDE и данные, которые читаются и пишутся (собственно для самих записываемых и считываемых данных это по барабану, инвертировалось сначала при записи, обратно при чтении, а вот для команд это играет роль). Для адресации регистров контроллера используются линии AD1, AD2 и AD3. Соответствие регистров на PC и УКНЦ: 1F0 110016 1F1 110014 1F2 110012 1F3 110010 1F4 110006 1F5 110004 1F6 110002 1F7 110000 Регистров, которым на PC соответствуют 3F6 и 3F7, нет. В самом первом секторе записана таблица разделов. В первых двух байтах записаны кол-во секторов в дорожке и кол-во сторон в дорожке, эта информация нужны для вычисления номера дорожки при переводе номера блока в RT-11 в CHS. Далее идут размеры разделов, каждый элемент занимает одно слово (два байта), размеры указаны в блоках RT-11. В самом конце сектора два слова контрольной суммы. (Источник: Alex_K, http://zx.pk.ru/showpost.php?p=262194&postcount=28) Существует две известных прошивки для контроллера IDE:
При загрузке с винчестера загрузчик сначала читает первый сектор, проверяет контрольную сумму и спрашивает у пользователя какой раздел использовать для загрузки. Подготовка жёсткого дискаИнструкция по созданию загрузочного раздела на жестком диске УКНЦ, под драйвер WD. (Источник: http://uknc.narod.ru/Suvorov/uknc_ide.rar) Примечание: для выполнения разметки диска наличие прошитого ПЗУ на контроллере не влияет.
Поддержка в эмулятореЭмуляция винчестера встроена в эмулятор начиная с версии Beta-16. Эмулятор работает только с образом винчестера в виде файла, хранящего только данные секторов. Сначала была поддержка только "прямых" образов (т.е. в том виде когда данные визуально читаются), начиная с версии Beta-20 поддерживается работа с инвертированными образами (в том виде как они хранятся на реальных дисках). Для использования в эмуляторе, размер файла образа должен быть кратен 512 байт. В первых двух байтах должно быть прописано число секторов на дорожку и число головок. Размер файла в блоках по 512 байт делится на количество секторов и количество головок -- получается число цилиндров. Допускаются диски с числом цилиндров меньше 1024. Для подключения образа винчестера в эмулятор нужно сначала выбрать в качестве кассеты ПЗУ один из образов ПЗУ винчестера. После этого выбирается образ винчестера для работы. Для загрузки с винчестера выбирается пункт загрузки "Кассета ПЗУ". Утилита RT11DSK умеет работать с образами винчестера: инвертировать образ, показывать таблицу разделов, работать с разделами как с отдельными дисками. Ссылки
|