Skip to content
Nikita Zimin edited this page Apr 5, 2020 · 9 revisions

IDE-контроллеры и винчестеры для УКНЦ

IDE-контроллер для УКНЦ — это плата расширения для вставки в разъём расширения, в качестве корпуса для устройства обычно использовался корпус КМД УКНЦ с подпиленной верхней частью. Винчестер ноутбучного формата прикреплялся прямо к печатной плате.

Разработка кооператива "Электронные работы", относится к 1994-1995 годам. Предполагает подключение жёсткого диска объёмом от 5 до 80 Мбайт. В комплект поставки входит дискета, содержащая программы HDINST.SAV, HDDRIV.SAV, драйвер HD.SYS и командный файл RUNME.COM.

Схема ПЗУ в IDE контроллере довольно необычная. Там припаяны в параллель К573РФ5 (8 x 2Кбит) младший байт и К155РЕ3 (8 x 32 байт) старший байт. В результате нижние 64 байт (32 слов) — правильные, а дальше начинается каша из содержимого РФ5 (верного) и повторяющегося содержимого РЕ3 (мусор). В нижних 32 словах сидит "загрузчик", который раскодирует и переносит побайтовое верное содержимое из РФ5 в память ПП, регистрирует хэндлер и запускается там.

Адресное пространство контроллера винчестера входит в окно 100000-117777. Подключается контроллер сбросом бита 0 в регистре 177054 (он отключает одновременно системное ПЗУ в диапазоне 100000-117777), и установкой или сбросом бита 3 в том же регистре (указывает номер слота). Само загрузочное ПЗУ расположено в диапазоне 100000-107777. В диапазоне 110000-117777 расположены регистры IDE. Собственно сама шина QBUS инверсная, поэтому инверсны и адреса IDE и данные, которые читаются и пишутся (собственно для самих записываемых и считываемых данных это по барабану, инвертировалось сначала при записи, обратно при чтении, а вот для команд это играет роль). Для адресации регистров контроллера используются линии AD1, AD2 и AD3.

Соответствие регистров на PC и УКНЦ:

 PC   УКНЦ
 1F0 110016
 1F1 110014
 1F2 110012
 1F3 110010
 1F4 110006
 1F5 110004
 1F6 110002
 1F7 110000

Регистров, которым на PC соответствуют 3F6 и 3F7, нет.

В самом первом секторе диска записана таблица разделов. В первых двух байтах записаны количество секторов в дорожке и количество сторон (heads) в дорожке, эта информация нужны для вычисления номера дорожки при переводе номера блока в RT-11 в CHS. Далее идут размеры разделов, каждый элемент занимает одно слово (два байта), размеры указаны в блоках RT-11. В самом конце сектора два слова контрольной суммы.

Существует две известных прошивки для контроллера IDE:

  • HDBOOT — ТОО "Электронные работы" — используется драйвер ID — до 8 разделов
  • WDROM — Олег Ховайко, Боголюбов А.А. — используются драйвера WD/WE/WF — до 24 разделов. Загрузка возможна только с разделов WD. Есть возможность создать один скрытый раздел — это использовалось для выделения неиспользуемой области с плохими секторами.

При загрузке с винчестера загрузчик сначала читает первый сектор, проверяет контрольную сумму и спрашивает у пользователя -- какой раздел использовать для загрузки.

Подготовка жёсткого диска

Инструкция по созданию загрузочного раздела на жестком диске УКНЦ, под драйвер WD. (Источник: http://uknc.narod.ru/Suvorov/uknc_ide.rar)

Примечание: для выполнения разметки диска наличие прошитого ПЗУ на контроллере не влияет.

  1. Загрузка с дискеты. Дискета обычная, системная. На дискеты должны присутствовать следующие файлы: WD.SYS, WDX.SAV (или WDXR.SAV — русская версия), WDBOOT.SAV В случае использования WDXR.SAV потребуется еще KDAY.SAV — чтобы русские буквы показывались.
  2. Запустить WDX.SAV, отвечать на вопросы. Получим размеченный винчестер.
  3. Запустить WDR.SAV — это резидент работы с винчестером.
  4. Грузим драйвер WD — LOAD WD. Если получаем ошибку — SET WD SYSGEN
  5. Формируем директорию INIT WD0: Можно глянуть на нее до и после разметки командой DIR WD0:
  6. Копируем все файлы с дискеты (что б не заморачиваться): COPY/SYS MZ0: WD0:
  7. Копируем загрузчик: COPY/BOOT:WD WD0:RT11SJ WD0:
  8. Перегружаемся и стартуем с винчестера (пункт меню "Кассета ПЗУ").

Поддержка в эмуляторе UKNCBTL

Эмуляция винчестера встроена в эмулятор начиная с версии Beta-16. Эмулятор работает только с образом винчестера в виде файла, хранящего только данные секторов. Сначала была поддержка только "прямых" образов (т.е. в том виде когда данные визуально читаются), начиная с версии Beta-20 поддерживается работа с инвертированными образами (в том виде как они хранятся на реальных дисках).

Для использования в эмуляторе, размер файла образа должен быть кратен 512 байт. В первых двух байтах должно быть прописано число секторов на дорожку и число головок. Размер файла в блоках по 512 байт делится на количество секторов и количество головок — получается число цилиндров. Допускаются диски с числом цилиндров меньше 1024.

Для подключения образа винчестера в эмулятор нужно сначала выбрать в качестве кассеты ПЗУ один из образов ПЗУ винчестера. После этого выбирается образ винчестера для работы. Для загрузки с винчестера выбирается пункт загрузки "Кассета ПЗУ".

Утилита RT11DSK умеет работать с образами винчестера: инвертировать образ, показывать таблицу разделов, работать с разделами как с отдельными дисками.

Подготовка образа HDD в эмуляторе

На эмуляторе можно подготовить образ винчестера практически так же как винчестер на реальной машине.

  1. Сначала нужно подготовить пустой образ — файл нужной длины. Например, (63 sectors/track) x (4 heads) x (80 tracks) x (512 bytes/sector) = 10321920 байт. В первые два байта файла прописать числа 63 (секторов на дорожку) и 4 (число головок). Остальные байты — нули.

  2. Загрузка с дискеты. Дискета обычная, системная. На дискете должны присутствовать следующие файлы: WD.SYS, WDX.SAV.

  3. Запускаем WDX.SAV, отвечаем на вопросы.

Здесь например параметры винчестера определены автоматически, выбрано создание 4-х разделов, указаны их размеры в блоках:

В результате мы получили образ винчестера с правильно заполненным первым блоком.

  1. Выполняем SET WD SYSGEN и перезагрузку с той же дискеты.

  2. Запустить WDR.SAV — это резидент работы с винчестером.

  3. Грузим драйвер WD — LOAD WD.

  4. Формируем директорию INIT WD0: Можно глянуть на нее до и после разметки командой DIR WD0:

  1. Копируем все файлы с дискеты (что б не заморачиваться): COPY/SYS MZ0: WD0:

  2. Копируем загрузчик: COPY/BOOT:WD WD0:RT11SJ WD0:

  3. Перегружаемся и стартуем с винчестера (пункт меню "Кассета ПЗУ").

Ссылки