-
Notifications
You must be signed in to change notification settings - Fork 2
IDE HDD ru
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)
Примечание: для выполнения разметки диска наличие прошитого ПЗУ на контроллере не влияет.
- Загрузка с дискеты. Дискета обычная, системная. На дискеты должны присутствовать следующие файлы: WD.SYS, WDX.SAV (или WDXR.SAV — русская версия), WDBOOT.SAV В случае использования WDXR.SAV потребуется еще KDAY.SAV — чтобы русские буквы показывались.
- Запустить
WDX.SAV
, отвечать на вопросы. Получим размеченный винчестер. - Запустить
WDR.SAV
— это резидент работы с винчестером. - Грузим драйвер WD —
LOAD WD
. Если получаем ошибку —SET WD SYSGEN
- Формируем директорию
INIT WD0:
Можно глянуть на нее до и после разметки командойDIR WD0:
- Копируем все файлы с дискеты (что б не заморачиваться):
COPY/SYS MZ0: WD0:
- Копируем загрузчик:
COPY/BOOT:WD WD0:RT11SJ WD0:
- Перегружаемся и стартуем с винчестера (пункт меню "Кассета ПЗУ").
Эмуляция винчестера встроена в эмулятор начиная с версии Beta-16. Эмулятор работает только с образом винчестера в виде файла, хранящего только данные секторов. Сначала была поддержка только "прямых" образов (т.е. в том виде когда данные визуально читаются), начиная с версии Beta-20 поддерживается работа с инвертированными образами (в том виде как они хранятся на реальных дисках).
Для использования в эмуляторе, размер файла образа должен быть кратен 512 байт. В первых двух байтах должно быть прописано число секторов на дорожку и число головок. Размер файла в блоках по 512 байт делится на количество секторов и количество головок — получается число цилиндров. Допускаются диски с числом цилиндров меньше 1024.
Для подключения образа винчестера в эмулятор нужно сначала выбрать в качестве кассеты ПЗУ один из образов ПЗУ винчестера. После этого выбирается образ винчестера для работы. Для загрузки с винчестера выбирается пункт загрузки "Кассета ПЗУ".
Утилита RT11DSK умеет работать с образами винчестера: инвертировать образ, показывать таблицу разделов, работать с разделами как с отдельными дисками.
На эмуляторе можно подготовить образ винчестера практически так же как винчестер на реальной машине.
-
Сначала нужно подготовить пустой образ — файл нужной длины. Например, (63 sectors/track) x (4 heads) x (80 tracks) x (512 bytes/sector) = 10321920 байт. В первые два байта файла прописать числа 63 (секторов на дорожку) и 4 (число головок). Остальные байты — нули.
-
Загрузка с дискеты. Дискета обычная, системная. На дискете должны присутствовать следующие файлы: WD.SYS, WDX.SAV.
-
Запускаем
WDX.SAV
, отвечаем на вопросы.
Здесь например параметры винчестера определены автоматически, выбрано создание 4-х разделов, указаны их размеры в блоках:
В результате мы получили образ винчестера с правильно заполненным первым блоком.
-
Выполняем
SET WD SYSGEN
и перезагрузку с той же дискеты. -
Запустить
WDR.SAV
— это резидент работы с винчестером. -
Грузим драйвер WD —
LOAD WD
. -
Формируем директорию
INIT WD0:
Можно глянуть на нее до и после разметки командойDIR WD0:
-
Копируем все файлы с дискеты (что б не заморачиваться):
COPY/SYS MZ0: WD0:
-
Копируем загрузчик:
COPY/BOOT:WD WD0:RT11SJ WD0:
-
Перегружаемся и стартуем с винчестера (пункт меню "Кассета ПЗУ").
- Фотографии платы, схемы устройства: http://uknc.narod.ru/Suvorov/index.htm
- Тема на zx.pk.ru: http://zx.pk.ru/showthread.php?t=12218
- http://zx.pk.ru/showpost.php?p=254244&postcount=41 — AlecV про устройство прошивки контроллера
- http://zx.pk.ru/showpost.php?p=262194&postcount=28 — Alex_K про адресное пространство и адреса регистров винчестера
- Заказ плат реплики КНЖМД УКНЦ: http://www.phantom.sannata.ru/forum/index.php?t=8216
- http://archive.pdp-11.org.ru/ukdwk_archive/ukncbtlwebcomplekt/Other/OlegH_WD/ — драйвер WD/WE от Олега Ховайко
- Образ дискеты, который используется для проверки работы винчестера в эмуляторе: https://github.com/nzeemin/ukncbtl-testbench/blob/master/data/sys1002wdx.dsk?raw=true