Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
hddxt [2020/12/16 19:18] – [Геометрия] admin | hddxt [2024/02/29 11:16] – [Диски MFM] admin |
---|
Здесь собраны различные заметки по подключению жестких дисков MFM/RLL к компьютеру IBM PC XT и совместимых. К сожалению, полную информации по этому вопросу найти уже сложно, кроме того, потихоньку все уже забывается. | Здесь собраны различные заметки по подключению жестких дисков MFM/RLL к компьютеру IBM PC XT и совместимых. К сожалению, полную информации по этому вопросу найти уже сложно, кроме того, потихоньку все уже забывается. |
| |
Основное внимание в этом документе обращено на вопросы "Как сделано?" и "Почему так сделано?". Текст написан технарем и для технарей, поэтому тут много жаргона и предполагаются базовые знания организации, схемотехники и функций BIOS XT. Что касается внешней стороны "Как это включить?" то можно почитать раздел "Дополнительные материалы". | Основное внимание в этом документе обращено на вопросы "Как сделано?" и "Почему так сделано?". Текст написан технарем и для технарей, поэтому тут много жаргона и предполагаются базовые знания организации, схемотехники IBM PC и функций BIOS PC XT. Что касается внешней стороны "Как это включить?" то можно почитать раздел "Дополнительные материалы". |
| |
====== BIOS XT и HDD ====== | ====== BIOS XT и HDD ====== |
| |
Как известно, компьютер [[wp>IBM_Personal_Computer_XT|IBM PC XT 5160]] был вторым персональным компьютером после [[wp>IBM_Personal_Computer#Original_PC|IBM PC 5150]]. Как и предшественник, IBM PC XT имел на материнской плате BIOS объемом 8K, который поддерживал основные устройства XT. Давайте рассмотрим поддержку устройств в BIOS IBM PC XT 5160. | Как известно, компьютер [[wp>IBM_Personal_Computer_XT|IBM PC XT 5160]] (это официальное название XT-шки) был вторым персональным компьютером после [[wp>IBM_Personal_Computer#Original_PC|IBM PC 5150]]. Как и предшественник, IBM PC XT имел на материнской плате BIOS объемом 8K, который поддерживал основные устройства XT. Давайте рассмотрим поддержку устройств в BIOS IBM PC XT 5160. |
| |
BIOS XT содержит драйвера очень ограниченного числа устройств: | BIOS XT содержит драйвера очень ограниченного числа устройств: |
| |
* Драйвер контроллера дисплея CGA и MDA, включая графические режиимы CGA и шрифты для них. Выбор типа контроллера осуществляется с переключателей на материнской плате. | * Драйвер контроллеров дисплея CGA или MDA, включая графические режимы CGA и шрифты для них. Выбор типа контроллера видео осуществляется с переключателей на материнской плате. |
* Драйвер клавиатуры (сканкоды типа XT) | * Драйвер клавиатуры ([[https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B0%D0%BD-%D0%BA%D0%BE%D0%B4|сканкоды]] типа XT) |
* Драйвер COM-порта на [[wp>8250_UART]] | * Драйвер COM-порта на [[wp>8250_UART]] |
* Драйвер принтера CENTRONIX и поддержка кнопки Print Screen | * Драйвер принтера [[https://ru.wikipedia.org/wiki/IEEE_1284|CENTRONIX]] и поддержка кнопки Print Screen |
* Драйвер флопи-контроллера на микросхеме i8272А. | * Драйвер флопи-контроллера на микросхеме i8272А. |
| |
{{ ibm_pc_xt_1.jpg?nolink&200|IBM PC XT 5160 общий вид}} | {{ ibm_pc_xt_1.jpg?nolink&200|IBM PC XT 5160 общий вид}} |
На IBM PC XT драйвером в BIOS поддерживаются дисководы двойной плотности (96tpi) 40 дорожек, 2 стороны, 9 секторов. Таким образом, в BIOS XT имеется поддержка дискет 360К **и только**. Количество флопиков выбирается с переключателей на материнской плате, от 1 до 4. **Все** флопики с точки зрения BIOS одинаковые, по 360К. | На IBM PC XT драйвером в BIOS поддерживаются дисководы двойной плотности DD (96tpi) 40 дорожек, 2 стороны, 9 секторов. Таким образом, в BIOS XT имеется поддержка дискет 360К **и только**. Количество флопиков выбирается с переключателей на материнской плате, от 1 до 4. **Все** флопики с точки зрения BIOS одинаковые, по 360К. |
| |
На PC поддержка дисковых устройств осуществляется через прерывание BIOS INT 13, самые важные вызовы конечно же "Прочитать сектор"(INT 13/AH=02h)/"Записать сектор"(INT 13/AH=03h). BIOS поддерживает до 4-х флопии-приводов 360К с номерами устройств от 0 до 3. | На PC поддержка дисковых устройств осуществляется через прерывание BIOS INT 13, самые важные вызовы конечно же "Прочитать сектор"(INT 13/AH=02h) и "Записать сектор"(INT 13/AH=03h). BIOS поддерживает до 4-х флопии-приводов 360К с номерами устройств от 0 до 3. |
| |
Стандартный BIOS XT обрабатывает также вызов INT 19 (Boot) и поддерживает загрузку с нулевого устройства, которое, как несложно догадаться, является флопиком 360К. Фактически, обработчик INT 19 состоит из вызова INT 13 "Прочитать сектор" c первого сектора дискеты (Boot Sector) в память по адресу 0000:7С00H (на 1Кб меньше 32К). Если в конце сектора есть сигнатура AAH/55H, то это скорее всего нормальный Boot Sector и BIOS передает туда управление. | Стандартный BIOS XT обрабатывает также вызов INT 19 (Boot) и поддерживает загрузку с нулевого устройства, которое, как несложно догадаться, является флопиком 360К. Фактически, обработчик INT 19 состоит из вызова INT 13 "Прочитать сектор" c первого сектора дискеты (Boot Sector) в память по адресу 0000:7С00H (на 1Кб меньше 32К). Если в конце сектора есть сигнатура AAH/55H, то это скорее всего нормальный Boot Sector и BIOS передает туда управление. |
| |
Таким образом, "стандартный" BIOS XT **не содержит** никаких драйверов жестких дисков, вся поддержка содержится в Optional ROM BIOS карты контроллера. | Таким образом, "стандартный" BIOS XT **не содержит** никаких драйверов жестких дисков, вся поддержка содержится в Optional ROM BIOS (ПЗУ) платы контроллера. |
| |
Материалы для дополнительного чтения: | Материалы для дополнительного чтения: |
* Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. Глава 5: Дисковые накопители | * Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. Глава 5: Дисковые накопители |
* Питер Нортон. Программно-аппаратная организация IBM-PC | * Питер Нортон. Программно-аппаратная организация IBM-PC |
* Ralf Brown Interrupt List http://www.ctyme.com/rbrown.htm | * Ralf Brown Interrupt List http://www.ctyme.com/rbrown.htm раздел INT 13H |
* Исходники BIOS из [[http://wiki.sensi.org/download/doc/IBM_5155_5160_Technical_Reference_6280089_MAR86.pdf|IBM PC XT Technical Reference]] Section 5 | * Исходники BIOS из [[http://wiki.sensi.org/download/doc/IBM_5155_5160_Technical_Reference_6280089_MAR86.pdf|IBM PC XT Technical Reference]] Section 5 |
* https://en.wikipedia.org/wiki/Booting#Boot_sequence_of_IBM_PC_compatibles | * https://en.wikipedia.org/wiki/Booting#Boot_sequence_of_IBM_PC_compatibles |
| |
Важное отличие XT от AT286/386/+ : В BIOS IBM PC AT и старших машин дополнительно содержится драйвер "стандартного" 16-битного MFM контроллера жестких дисков Western Digital на чипсете WD1010. Машина IBM 5170 (это полное название AT-шки) продавалась сразу с контроллером WD1003-WA. Поэтому "стандартный" 16-битный MFM контроллер не имеет BIOS-а на борту, он ему просто не нужен, т.к. драйвер содержится в основном BIOS-е материнской платы AT. Далее, оказывается, что контроллер "внутре" любого IDE диска полностью совпадает по системе команд и регистрам с MFM WD1003-WA (плюс расширения). Это нисколько не удивительно, поскольку стандарты IDE разрабатывала та же фирма Western Digital. Этот набор регистров называется Task File, он стандартный и одинаковый у 16-битного MFM и обычных IDE и работает одинаково. Поэтому машине AT с IDE диском и контроллером тоже не нужны никакие дополнительные BIOS-ы. | Важное отличие XT от AT286/386/+ : В BIOS IBM PC AT и старших машин дополнительно содержится драйвер "стандартного" 16-битного MFM контроллера жестких дисков Western Digital на чипсете WD1010. Машина IBM 5170 (это полное название AT-шки) продавалась сразу с жестким диском и контроллером типа WD1003-WA. Поэтому "стандартный" 16-битный MFM контроллер не имеет BIOS-а на борту, он ему просто не нужен, т.к. драйвер содержится в основном BIOS-е материнской платы AT. Далее, оказывается, что контроллер "внутре" любого IDE диска полностью совпадает по системе команд и регистрам с MFM WD1003-WA (плюс расширения). Это нисколько не удивительно, поскольку стандарты IDE разрабатывала та же фирма Western Digital. Этот набор регистров и команд называется Task File, он стандартный и одинаковый у 16-битного MFM и у обычных IDE и работает одинаково. Поэтому машине AT с IDE диском и контроллером тоже не нужны никакие дополнительные BIOS-ы. |
| |
Второе важное отличие AT286/386/+ - это наличие CMOS Clock. Это такие специальные часы с маленькой памятью на батарейке. В памяти хранятся настройки CMOS Setup, так что CMOS заменяет кучу переключателей. В одной из ячеек CMOS-памяти хранится так называемый "тип жесткого диска". На самом деле это просто индекс (номер) в большой таблице BIOS, где хранятся параметры C/H/S дисков. Количество таких фиксированных типов постоянно росло, доросло до 46 и в конце концов это всем надоело. Сделали User Type = 47, в котором количество дорожек, головок и секторов можно задавать вручную. | Второе важное отличие AT286/386/+ - это наличие CMOS Clock. Это такие специальные часы с маленькой памятью на батарейке. В памяти хранятся настройки CMOS Setup, так что CMOS заменяет кучу переключателей. В одной из ячеек CMOS-памяти хранится так называемый "тип жесткого диска". На самом деле это просто индекс (номер) в большой таблице BIOS, где хранятся параметры C/H/S дисков. Количество таких фиксированных типов постоянно росло, доросло до 46 и в конце концов это всем надоело. Сделали User Type = 47, в котором количество дорожек, головок и секторов можно задавать вручную. |
Подробнее в википедии: [[https://en.wikipedia.org/wiki/ST-506]] | Подробнее в википедии: [[https://en.wikipedia.org/wiki/ST-506]] |
| |
Способ записи (кодировка битов) на такой жесткий диск был MFM (Modified Frequency Modulation). Таким образом, по названию способа записи и сами жесткие диски стали называться MFM. А интерфейс для подключения у них был уже знакомый нам ST-506/412. | Способ записи (кодировка битов) на такой жесткий диск был MFM (Modified Frequency Modulation) на скорости 5 Mbit/s. Таким образом, по названию способа записи и сами жесткие диски стали называться MFM. А интерфейс для подключения у них был уже знакомый нам ST-506/412. |
| |
Надо отметить, что, по сути, диск с интерфейсом ST-506/412 представляет из себя такой "цифровой магнитофон". То есть, выбрав дорожку 0 сторону 1 мы получаем по кругу одни и те же данные 3600 раз в минуту (60 раз в секунду) и плюс сигнал индекса на каждый оборот. Поэтому, в теории, записать на дорожку ST-506/412 можно **что угодно**, не только MFM, а любой поток битов <10MHz. Формированием и распознаванием "заголовков секторов" и выделением данных занимается контроллер. Поэтому, перед использованием нового жесткого диска, его надо отформатировать на вашем контроллере. Такая схема разбиения на сектора называется "Soft Sectors". Совместимость форматов дорожки между разными контроллерами - довольно посредственная. Например, если контроллеры сделаны на одинаковом чипсете (например WD), то совместимость скорее всего будет. А если на разных (WD и, например, OMTI) - то скорее всего нет. | |
| |
| Надо отметить, что, по сути, диск с интерфейсом ST-506/412 представляет из себя такой "цифровой магнитофон". То есть, выбрав дорожку 0 сторону 1 мы получаем по кругу одни и те же данные 3600 раз в минуту (60 раз в секунду) и плюс сигнал INDEX на каждый оборот. Поэтому, в теории, записать на дорожку ST-506/412 можно **что угодно**, не только MFM, а любой поток битов <10MHz. Формированием и распознаванием "заголовков секторов" и выделением данных занимается контроллер. Поэтому, перед использованием нового жесткого диска, его надо отформатировать на вашем контроллере. Такая схема разбиения на сектора называется "Soft Sectors". Совместимость форматов дорожки между разными контроллерами - довольно посредственная. Например, если контроллеры сделаны на одинаковом чипсете (например WD), то совместимость скорее всего будет. А если на разных (WD и, например, OMTI) - то скорее всего нет. |
| {{ :mfm_track.jpg?direct&500 |Формат дорожки MFM контроллера на чипах WD10101}} |
Материалы для дополнительного чтения: | Материалы для дополнительного чтения: |
* [[http://wiki.sensi.org/download/doc/st412_oemmanual_apr82.pdf|ST 506/412 OEM Manual]] Фирменное руководство от Seagate на диски ST-506 и ST-412 | * [[http://wiki.sensi.org/download/doc/st412_oemmanual_apr82.pdf|ST 506/412 OEM Manual]] Фирменное руководство от Seagate на диски ST-506 и ST-412 |
* [[http://wiki.sensi.org/download/Seagate_ST-225_OEM_Manual_pages.pdf|Seagate ST-225 OEM Manual]] | * [[http://wiki.sensi.org/download/Seagate_ST-225_OEM_Manual_pages.pdf|Seagate ST-225 OEM Manual]] |
* [[http://www.minuszerodegrees.net/manuals.htm#Seagate|Другие модели Seagate]] | * [[http://www.minuszerodegrees.net/manuals.htm#Seagate|Другие модели Seagate]] |
* Пример для изучения возможностей разгона ST-506/412: контроллер повышенной плотности [[http://wiki.sensi.org/download/doc/Perstor%20PS180-16F%20-%20Advertisement.pdf|Perstor PS180-16F]] | * Пример для изучения возможностей разгона ST-506/412: контроллер повышенной плотности [[http://wiki.sensi.org/download/doc/Perstor%20PS180-16F%20-%20Advertisement.pdf|Perstor PS180-16F]] не MFM. |
| * [[https://www.pdp8online.com/mfm/mfm.shtml|MFM Hard Disk Reader/Emulator]] Эмулятор и считыватель дисков MFM. Знает множество форматов. |
| |
====== Шлейфы MFM ====== | ====== Шлейфы MFM ====== |
http://www.minuszerodegrees.net/ibm_xebec/ibm_xebec.htm | http://www.minuszerodegrees.net/ibm_xebec/ibm_xebec.htm |
| |
Это было довольно интеллектуальное устройство - на борту целый процессор Z80, ПЗУ с микрокодом, собственный контроллер DMA i8237 и т.д. Такая схемотехника не является строгим каноном, например, контроллеры WD1002-WX и Seagate ST-11M для XT в качестве процессора используют однокристальную ЭВМ i8051 и т.д. | Контроллер Xebec 1210 - довольно интеллектуальное устройство: на борту целый процессор Z80, ПЗУ с микрокодом, собственный контроллер DMA i8237 и т.д. Такая схемотехника не является строгим каноном, например, контроллеры WD1002-WX и Seagate ST-11M для XT полностью совместимы, но в качестве процессора используют однокристальную ЭВМ i8051 и т.д. |
| |
Контроллер Xebec 1210 поддерживал два жестких диска Seagate ST-412 и имел на борту ПЗУ (Optional ROM), то есть расширение BIOS. Интерфейс между BIOS и Optional ROM, как известно, является стандартом на IBM PC: во время POST процедуры BIOS материнской платы XT сканирует область дополнительных ROM и, если находит сигнатуру, пытается эти ROM запустить. Получив управление BIOS контроллера, в свою очередь, тестирует жесткий диск (читает 1-й сектор) и переписывает на себя вектора прерываний INT 13 и INT 19 (включается первым в цепочку). Если же диск неисправен - выводится ошибка 1701. | Контроллер Xebec 1210 поддерживал два жестких диска Seagate ST-412 и имел на борту ПЗУ (Optional ROM), то есть расширение BIOS. Интерфейс между BIOS и Optional ROM, как известно, является стандартом на IBM PC: во время POST процедуры BIOS материнской платы XT сканирует область дополнительных ROM и, если находит сигнатуру, пытается эти ROM запустить. Получив управление BIOS контроллера, в свою очередь, тестирует жесткий диск (читает 1-й сектор) и переписывает на себя вектора прерываний INT 13H и INT 19H (включается первым в цепочку). Если же диск неисправен - выводится ошибка 1701. |
| |
Новый обработчик INT 13H добавляет поддержку устройства с номером 80H (и 81H для второго диска). Обработка старых устройств (как мы помним - флопиков с номерами 00H и 01H) передается предыдущему обработчику INT 13 (стрый адрес сохраняется на INT 40). Новый обработчик INT 19 меняет логику загрузки: сначала пытается загрузиться с флопика, а в случае неудачи - с первого жесткого диска (устройство 80H). | Новый обработчик INT 13H добавляет поддержку физических дисковых устройства с номером 80H (и 81H для второго диска). Обработка старых устройств (как мы помним - флопиков с номерами 00H и 01H) передается предыдущему обработчику INT 13H (стрый адрес сохраняется на INT 40H). Новый обработчик INT 19H меняет логику загрузки: сначала пытается загрузиться с флопика, а в случае неудачи - с первого жесткого диска (устройство 80H). |
| |
BIOS контроллера XT использует некотрые ячейки [[http://stanislavs.org/helppc/bios_data_area.html|BDA]] (BIOS data area), а кроме того, он заполняет область FDPT (Fixed Disk Parameter Table), на которую указывает INT 41 (INT 46 для второго диска). Обратите внимание, этот вектор используется не для вызова, а именно как FAR-указатель на данные параметров жесткого диска. Указывать он может как прямо на таблицу в области ROM контроллера диска, так и в память. Для таблички FDPT часто используется или область старших прерываний (INT C0-C3 и INT C4-C7) которые не использует никто кроме ROM Basic, или область стека BIOS 0000:0500h, что конечно чревато ее затиранием. Иногда используют последний килобайт памяти 9000:FС00 (там же размещается EBDA (Extended BIOS Data Area)) и остается 639К вместо 640К. Для устройств от 82H и выше таблицы FDPT не ведется, их параметры можно узнать только через INT 13H функцию 8H. | BIOS контроллера XT использует некотрые ячейки [[http://stanislavs.org/helppc/bios_data_area.html|BDA]] (BIOS data area), а кроме того, он заполняет область FDPT (Fixed Disk Parameter Table), на которую указывает INT 41H (INT 46H для второго диска). Обратите внимание, этот вектор используется не для вызова, а именно как x86 FAR-указатель на данные параметров жесткого диска. Указывать он может как прямо на таблицу в области ROM контроллера диска, так и в память. Для таблички FDPT часто используется или область старших прерываний (INT C0-C3 и INT C4-C7) которые не использует никто кроме ROM Basic, или область стека BIOS 0000:0500h, что конечно чревато ее затиранием. Иногда используют последний килобайт памяти 9000:FС00 (там же размещается EBDA (Extended BIOS Data Area)) и остается 639К вместо 640К. Для устройств с нормерами от 82H и выше таблицы FDPT не ведется, их параметры можно узнать только через INT 13H функцию AH=8H. |
| |
При старте MS-DOS опрашивает BIOS и FDPT на наличие жестких дисков в системе. Поддержка MS-DOS для жесткого диска устроена также несколько сложнее, чем для дискеты. Появилась поддержка Таблиц Разделов (Partition Table) и специальная программа FDISK в составе DOS (начиная с 2.0) для работы с разделами. Загрузчик в Boot Sector-е жесткого диска тоже несколько сложнее - он проверяет таблицу разделов и грузится с первого "активного" раздела. Когда загружается MS-DOS, он присваивает устройству 80H (а точнее, первому активному разделу) символическое имя C:, так как на уровне BIOS никаких имен нету, только номера. | При старте MS-DOS опрашивает BIOS и FDPT на наличие жестких дисков в системе. Поддержка MS-DOS для жесткого диска устроена также несколько сложнее, чем для дискеты. Появилась поддержка Таблиц Разделов (Partition Table) и специальная программа FDISK в составе DOS (начиная с 2.0) для работы с разделами. Загрузчик в Boot Sector-е жесткого диска тоже несколько сложнее - он проверяет таблицу разделов и грузится с первого "активного" раздела. Когда загружается MS-DOS, он присваивает устройству 80H (а точнее, первому активному разделу) символическое имя C:, так как на уровне BIOS никаких имен нету, только номера устройств. |
| |
{{ wd1002.jpg?nolink&200}} | {{ wd1002.jpg?nolink&200}} |
Следом за Xebec, другие производители также выпустили на рынок массу контроллеров для XT. Самой, пожалуй, популярной была серия Western Digital WD1002-WX. Благодаря тому, что IBM опубликовала полные спецификации, контроллеры WD были практически совместимы с Xebec на уровне регистров, хотя и сделаны на других чипах. Кроме WD часто встречались контроллеры фирм Longshine, DTC и SMC OMTI. Даже фирма Seagate поспешила на рынок со своими ST-11M и ST-11R, странно что они сразу не выпустили контроллер ISA-8 для своего сверх-популярного диска ST-412. В СССР также выпускались машины с жестким диском MFM. ПЭВМ "Искра-1030" имела контроллер жесткого диска, повторяющим ранний WD1002-WX на микросхемах - клонах набора WD. ПЭВМ "ЕС-1841" имела контроллер - близкий аналог Xebec. | Следом за Xebec, другие производители также выпустили на рынок массу контроллеров для XT. Самой, пожалуй, популярной была серия Western Digital WD1002-WX. Благодаря тому, что IBM опубликовала полные спецификации, контроллеры WD были практически совместимы с Xebec на уровне регистров, хотя и сделаны на других чипах. Кроме WD часто встречались контроллеры фирм Longshine, DTC и SMC OMTI. Даже фирма Seagate поспешила на рынок со своими контроллерами ST-11M и ST-11R (странно что они сразу не выпустили контроллер XT ISA-8 для своего сверх-популярного диска ST-412). В СССР также выпускались машины с жестким диском MFM. ПЭВМ "Искра-1030" имела контроллер жесткого диска, повторяющим ранний WD1002-WX на микросхемах - клонах набора WD. ПЭВМ "ЕС-1841" имела контроллер - близкий аналог Xebec. |
| |
Дополнительные материалы для чтения: | Дополнительные материалы для чтения: |
Встроенный форматтер на разных контроллерах имеет разный интеллект. В простейшем случае он просто начинает форматировать все дорожки/головки не задавая лишних вопросов, в других случаях ведет длинный диалог с пользователем. Вызов в BIOS тоже никуда не делся и появилось множество красивых диалоговых программ форматирования (они имеют проблемы с трансляцией, но об этом ниже). | Встроенный форматтер на разных контроллерах имеет разный интеллект. В простейшем случае он просто начинает форматировать все дорожки/головки не задавая лишних вопросов, в других случаях ведет длинный диалог с пользователем. Вызов в BIOS тоже никуда не делся и появилось множество красивых диалоговых программ форматирования (они имеют проблемы с трансляцией, но об этом ниже). |
| |
После низкоуровневого форматирования получается жесткий диск, у которого все сектора читаются-пишутся (если они не сбойные), но пока забиты нулями (или каким-то другим мусором). Чтобы диск увидела система (например DOS), необходимо создать на диске таблицу разделов (утилитой fdisk) и создать структуру файловой системы (утилитой format). | После низкоуровневого форматирования получается жесткий диск, у которого все сектора читаются-пишутся (если они не сбойные), но пока забиты нулями (или каким-то другим мусором). Чтобы диск увидела система (например DOS), необходимо создать на диске таблицу разделов (утилитой fdisk) и создать структуру и оглавление файловой системы (утилитой format). |
| |
Дополнительные материалы для чтения: | Дополнительные материалы для чтения: |
===== Геометрия ===== | ===== Геометрия ===== |
{{ ibm_hdd_1.jpg?nolink&200}} | {{ ibm_hdd_1.jpg?nolink&200}} |
Как уже написано выше, диск MFM с физической точки зрения состоит из XXX дорожек и YY головок и "свободного" пространства на дорожке. Возникает два вопроса: | Как уже написано выше, диск MFM с физической точки зрения состоит из NNN дорожек (Cylinders) и YY головок (Heads) и "свободного" пространства на дорожке. Возникает два вопроса: |
| |
* Каким образом дорожка форматируется на сектора ? | * Каким образом дорожка форматируется на сектора ? |
Очень большое количество легенд связано с RLL дисками и контроллерами. Давайте разберемся. | Очень большое количество легенд связано с RLL дисками и контроллерами. Давайте разберемся. |
| |
Начнем с того, что [[wp>Run-length_limited|RLL]] - это на самом деле такой метод кодирования битового потока. Он хорош тем, что уменьшает количество перепадов (фронтов) в потоке. Для наиболее широко распространенного в контроллерах XT метода RLL(2,7) скорость уменьшается практически на 50%. Это позволяет поднять битовую скорость при сохранении той же полосы. В большинстве RLL контроллеров битовая скорость составляет 7.5Mbit/s, причем "скорость перепадов" и соответственно спектр сигнала получается не намного больше, чем у MFM на 5Mbit/s. Это позволяет записать больше информации на жесткий диск, но предъявляет повышенные требования к самому жесткому диску (минимальный джиттер - неравномерное вращение "блина", качественный маршевый двигатель, подшипники и головки, минимальные искажения в тракте чтения/записи) и к контроллеру (схема ФАПЧ). | Начнем с того, что [[wp>Run-length_limited|RLL]] - это на самом деле такой метод кодирования битового потока. Он хорош тем, что уменьшает количество перепадов (фронтов) в потоке. Для наиболее широко распространенного в контроллерах XT метода RLL(2,7) скорость уменьшается практически на 50%. Это позволяет поднять битовую скорость при сохранении той же полосы. В большинстве RLL контроллеров битовая скорость составляет 7.5Mbit/s, причем "скорость перепадов" и соответственно спектр сигнала получается не намного больше, чем у MFM на 5Mbit/s. Это позволяет записать больше информации на жесткий диск, но предъявляет повышенные требования к самому жесткому диску (нужен минимальный джиттер - неравномерное вращение "блина", качественный маршевый двигатель, подшипники и головки, минимальные искажения в тракте чтения/записи) и к контроллеру (схема ФАПЧ). |
| |
Емкость нетрудно прикинуть. При скорости вращения 3600 RPM емкость дорожки составляет 1/60 * 7500000 = 125000 бит = 15625 байт то есть примерно 30.5 секторов по 512 байт. Из за требований организации промежутков и заголовков стабильно удается записать 26 секторов. | Емкость нетрудно прикинуть. При скорости вращения 3600 RPM емкость дорожки составляет 1/60 * 7500000 = 125000 бит = 15625 байт то есть примерно 30.5 секторов по 512 байт. Из за требований организации промежутков и заголовков стабильно удается записать 26 секторов. |
| |
===== Интерлив ===== | ===== Интерлив ===== |
| {{ :interleave-factor.jpg?nolink&300|}} |
| |
Для чего придумали интерлив (чередование) ? Дело в том, что машины тогда были довольно медленные. XT вместе с контроллером просто не успевала обрабатывать поступающую информацию, и сектор на вращающемся диске успевал "убежать" из под считывающей головки. Чтобы прочитать следующий сектор N+1, надо было ждать целый оборот диска. Идея пришла очень простая. Поскольку все сектора имеют внутри номер, то сектора можно записывать не подряд. Например, у нас на дорожке 9 секторов, и нам надо прочитать сектора 2 и 3. Записываем сектора в таком порядке: | Для чего придумали интерлив (чередование) ? Дело в том, что машины тогда были довольно медленные. XT вместе с контроллером просто не успевала обрабатывать поступающую информацию, и сектор на вращающемся диске успевал "убежать" из под считывающей головки. Чтобы прочитать следующий сектор N+1, надо было ждать целый оборот диска. Идея пришла очень простая. Поскольку все сектора имеют внутри номер, то сектора можно записывать не подряд. Например, у нас на дорожке 17 секторов, и нам надо прочитать сектора 2 и 3. Записываем сектора в таком порядке: |
| |
1 4 7 2 5 8 3 6 9 | 1 7 13 2 8 14 3 9 15 4 10 15 5 11 17 6 12 |
| |
Пока мы разбираемся с сектором 2 под головкой "проскакивают" сектора 5 и 8, а сектор 3 оказывается в нужное время в нужном месте. Тут получается интерлив 3:1, то есть один читаем, два пропускаем, читаем. Для чтения всех 9-ти секторов подряд нам нужно три оборота шпинделя. Соответственно, суммарная скорость "с блина" тоже падает, но зато нам не нужно ждать целый оборот для поиска следующего сектора. При интерливе 1:1 получилась бы самая высокая скорость, но далеко не все контроллеры и машины успевали обработать такой поток. | Пока мы разбираемся с сектором 2 под головкой "проскакивают" сектора 8 и 14, а сектор 3 оказывается в нужное время в нужном месте. Тут получается интерлив 3:1, то есть один читаем, два пропускаем, читаем. Для чтения всех 17-ти секторов подряд нам нужно три оборота шпинделя. Соответственно, суммарная скорость "с блина" тоже падает, но зато нам не нужно ждать целый оборот для поиска следующего сектора. При интерливе 1:1 получилась бы самая высокая скорость, но далеко не все контроллеры и машины успевали обработать такой поток. |
| |
Программа форматирования большинства XT контроллеров позволяет задавать интерлив вручную. Как правило, оптимальное значение зависит от скорости материнской платы в TURBO моделях и модели контроллера. Обычно скорость плавно возрастает от примерно 80Кб/с на интерливе 6:1, а потом резко падает (сектора успевают "убежать"). На TURBO материках 12MHz и хорошем контроллере иногда достижим интерлив 2:1 и скорость передачи до 400Кб/с. | Программа форматирования большинства XT контроллеров позволяет задавать интерлив вручную. Как правило, оптимальное значение зависит от скорости материнской платы в TURBO XT моделях и модели контроллера. Обычно скорость плавно возрастает от примерно 80Кб/с на интерливе 6:1, а потом резко падает (сектора успевают "убежать"). На TURBO материках 12MHz и хорошем контроллере иногда достижим интерлив 2:1 и скорость передачи до 400Кб/с. |
| |
Существуют несколько программ, которые могут подобрать оптимальный интерлив для данной комбинации материнской платы плюс контроллер, например OPTUNE или CALIBRATE. | Существуют несколько программ, которые могут подобрать оптимальный интерлив для данной комбинации материнской платы плюс контроллер, например OPTUNE или CALIBRATE. |
Краткий ответ такой: это во многом вопрос везения и добросовестности программистов Optional ROM. | Краткий ответ такой: это во многом вопрос везения и добросовестности программистов Optional ROM. |
| |
Кроме MFM и RLL контроллеров для XT существовали 8-битные SCSI адаптеры (например Seagate ST-01, Trantor T-130B или Future Domain TMC950). Недавно был разработан XTIDE контроллер для ISA-8 по мотивам платы Silicon Valley Computer ADP50L и контроллер Compact Flash. Все они имеют набортный BIOS (Optional ROM), обслуживают дисковый INT 13 и поддерживают загрузку через INT 19. | Тут надо учитывать, что существовал целый "зоопарк" различных дисковых решений. Кроме MFM и RLL контроллеров для XT существовали 8-битные SCSI адаптеры (например Seagate ST-01, Trantor T-130B или Future Domain TMC950 и т.д.). На закате XT существовали даже адаптеры для подключения 16-битного IDE: например Silicon Valley Computer ADP50L. Недавно был разработаны подобный XTIDE контроллер для ISA-8 и контроллер Compact Flash (XT CF Lite). Все они имеют набортный BIOS (Optional ROM), обслуживают дисковый INT 13 и поддерживают загрузку через INT 19. |
| |
Самое первое требование к устройствам на шине ISA-8 - это отсутствие конфликтов по портам ввода-вывода I/O, прерываниям IRQ, каналам DMA и адресам размещения Optional ROM. Поскольку в XT нету никакой поддержки Plug-n-Play, отсутствие конфликтов целиком ложится на пользователя. | Самое первое требование к устройствам на шине ISA-8 - это отсутствие конфликтов по портам ввода-вывода I/O, прерываниям IRQ, каналам DMA и адресам размещения Optional ROM. Поскольку в XT нету никакой поддержки Plug-n-Play, отсутствие конфликтов целиком ложится на пользователя. |
===== XT контроллер на AT ===== | ===== XT контроллер на AT ===== |
| |
Что будет, если поставить 8-битный контроллер XT MFM/RLL в ISA-слот машины AT или выше ? | Что будет, если поставить 8-битный контроллер XT MFM/RLL в ISA-слот машины AT 286 или выше ? |
| |
Как мы помним, в BIOS AT имеется драйвер "стандартного" 16-битного MFM контроллера WD1003-WA. Геометрия диска считывается из CMOS (точнее - считывается Тип Диска - индекс, а далее в таблице BIOS ищется геометрия). | Как мы помним, в BIOS-е AT-совместимых машин имеется драйвер "стандартного" 16-битного MFM контроллера WD1003-WA. Геометрия диска считывается из CMOS (точнее - считывается Тип Диска - индекс, а далее в таблице BIOS ищется геометрия). |
| |
BIOS контроллера XT не использует ни CMOS ни таблицу типов и не перекрывается по портамм I/O (XT=320H и AT=1F0H), поэтому обычно он вполне совместим и с контроллером WD1003-WA и с IDE Task File (что как мы помним, практически то же самое). При этом BIOS AT работает со своими дисками, а BIOS контроллера XT - со своими. Если AT дисков нет (например, в BIOS AT стоит Drive Type = 0), то контроллер XT становится единственным, его диск получает номер 80H при старте его Optional ROM, а активный раздел на нем - букву C: после загрузки DOS. | BIOS контроллера XT не использует ни CMOS ни таблицу типов оттуда и не перекрывается по портам I/O (XT=320H против AT=1F0H), истользует одно младшее прерывание (обычно IRQ=5) и один канал DMA. Поэтому, теоретически, он аппаратно вполне совместим с AT контроллером WD1003-WA и с IDE Task File (что как мы помним, практически то же самое). При этом BIOS AT будет работать со своими дисками, а BIOS контроллера XT - со своими. В действительности же, если к AT-машине подключить одновременно и XT-контроллер и использовать MFM/IDE диск, то тут всё зависит от аккуратности программистов обеих BIOS. Например, BIOS-ы могут "подраться" за FDPT, номер диска и т.д. Чаще всего такая конфигурация работает, но надо тестировать. Если AT-дисков в машине нет (например, в BIOS AT стоит Drive Type = 0), то контроллер XT становится единственным, его диск получает номер 80H при старте его Optional ROM, а активный раздел на нем - букву C: после загрузки DOS. |
| |
Справедливости ради следует отметить, что существуют и "продвинутые" 16-bit ISA MFM/RLL контроллеры, которые не соответствуют WD1003-WA (например, Seagate ST-21/ST-22 или многие DTC) и которые имеют собственный BIOS на борту и "отзываются" на собственных I/O адресах. Как правило, они не используют данные из CMOS и прекрасно уживаются в качестве второго контроллера с WD1003-WA или единственными в системе. Такие "продвинутые" MFM/RLL карты очень напоминают SCSI ISA-16 контроллеры, также имеющие собственный BIOS. | Справедливости ради следует отметить, что существуют и "продвинутые" AT 16-bit ISA MFM/RLL контроллеры, которые не соответствуют WD1003-WA (например, Seagate ST-21/ST-22 или многие DTC) и которые имеют собственный BIOS на борту и "отзываются" на собственных I/O адресах. Как правило, они не используют данные из CMOS и прекрасно уживаются в качестве второго контроллера с WD1003-WA или единственными в системе. Такие "продвинутые" MFM/RLL карты очень напоминают SCSI ISA-16 контроллеры, также имеющие собственный BIOS. Для них надо проверить отутствие конфликтов за ресурсы шины ISA, но как правило, они тоже работают совместо с XT контроллерамии. |
| |
===== XT-BUS ===== | ===== XT-BUS ===== |
{{ tandon_hdd_mfm.jpg?nolink&300|WD HDD + Controller}} | {{ tandon_hdd_mfm.jpg?nolink&300|WD HDD + Controller}} |
Большое количество вопросов связано с дисками XT-BUS. На самом деле, предком XT-BUS можно считать устройство типа [[wp>Hardcard]] (или WD FileCard). После изобретения малогабаритных 3-дюймовых жестких дисков некоторые фирмы выпустили ISA-8 карточки, содержащие контроллер и диск на одной раме (или длинной плате). Причем иногда электроника накопителя и контроллера настолько сливалась, что кабелей ST-506/412 просто не было. Поэтому, вполне логично было выпустить диски, имеющие **шлейф**, в котором фактически передается минимальный вариант шины ISA-8, а контроллер расположен прямо на плате электроники диска (XT Attachment). | Большое количество вопросов связано с дисками XT-BUS. На самом деле, предком XT-BUS можно считать устройство типа [[wp>Hardcard]] (или WD FileCard). После изобретения малогабаритных 3-дюймовых жестких дисков некоторые фирмы выпустили ISA-8 карточки, содержащие контроллер и диск на одной раме (или длинной плате). Причем иногда электроника накопителя и контроллера настолько сливалась, что кабелей ST-506/412 просто не было. Поэтому, вполне логично было выпустить диски, имеющие **шлейф**, в котором фактически передается минимальный вариант шины ISA-8, а контроллер расположен прямо на плате электроники диска (так называемый XT Attachment). |
| |
Таким образом, XT-BUS шина, это просто "удлинитель" урезанной шины ISA-8. На XT-BUS шлейф выведены "младшие" 2 линии адреса, 8 бит данных, сигналы дешифрации, Reset, а также заведены сигналы одного канала DMA и один IRQ. По набору команд контроллер "внутри" жесткого диска XT-BUS практически полностью соответствует ISA-8 контроллеру WD1002-WX и даже располагается на тех же адресах (320h или 324h). BIOS контроллера располагается "снаружи", на плате (а не внутри диска), в отдельной ПЗУ или входит в состав BIOS-а материнской платы (на EuroXT). | Таким образом, XT-BUS шина - это просто "удлинитель" урезанной шины ISA-8. На XT-BUS-шлейф выведены "младшие" 2 линии адреса, 8 бит данных, сигналы дешифрации, Reset, а также заведены сигналы одного канала DMA и один IRQ. По набору команд, контроллер "внутри" жесткого диска XT-BUS практически полностью соответствует ISA-8 контроллеру WD1002-WX и даже располагается на тех же адресах (320h или 324h). BIOS контроллера располагается "снаружи", на плате (а не внутри диска), в отдельной ПЗУ или входит в состав BIOS-а материнской платы (на EuroXT). |
| |
XT-BUS **полностью НЕсовместим** с AT-BUS IDE, хотя использует такой же 40-жильный шлейф и IDC-коннекторы. Это становится понятно хотя бы по той причине, что "внутри" XT-BUS диска контроллер имитирует 8-битный WD1002-WX, а внутри AT-BUS IDE диска - 16-битный WD1003-WA с TaskFile. | XT-BUS **полностью НЕсовместим** с AT-BUS IDE, хотя использует такой же 40-жильный шлейф и IDC-коннекторы. Это становится понятно хотя бы по той причине, что "внутри" XT-BUS диска контроллер имитирует 8-битный WD1002-WX, а внутри AT-BUS IDE диска - 16-битный WD1003-WA с TaskFile. |
* Seagate ST-351X (40 MB) | * Seagate ST-351X (40 MB) |
* Seagate ST-351A/X (40 MB) | * Seagate ST-351A/X (40 MB) |
| * Epson |
| * HMD-755 (20 MB) |
| * HMD-765 (40 MB) |
| * Tandy |
| * 25-1045 (20 MB) |
| * 25-1046 (40 MB) |
| |
| Фирма Conner выпускала "близнецы" - жесткие диски CP-2024XT и CP-2024AT c XT-BUS и AT-BUS (IDE) интерфейсом соответственно (и еще чуть позже пару CP-4044XT/CP-4044AT). |
| |
| Дополнительное чтение: [[https://dosdays.co.uk/topics/xt_ide_vs_ide.php|What was 8-bit XT-IDE or XTA?]] |
| |
===== XT-BUS и терминология ===== | ===== XT-BUS и терминология ===== |
Также следует упомянуть разработку "[[http://www.vcfed.org/forum/showthread.php?29202-XTIDE-Rev2|XT IDE]]" c Vintage Computer Forum. Это контроллер для шины ISA-8 для подключения обычных 16-битных IDE/ATA дисков. Название авторское и применяется именно для этой разработки. | Также следует упомянуть разработку "[[http://www.vcfed.org/forum/showthread.php?29202-XTIDE-Rev2|XT IDE]]" c Vintage Computer Forum. Это контроллер для шины ISA-8 для подключения обычных 16-битных IDE/ATA дисков. Название авторское и применяется именно для этой разработки. |
| |
Еще один интересный (но редко используемый) режим имеется у карточек Compact Flash. Как известно, электрический интерфейс Compact Flash может представляться или 16-bit шиной PCMCIA или шиной IDE. В режиме PCMCIA карточка Compact Flash работает как PCMCIA/ISA-16 контроллер IDE на "альтернативных" адресах 0x1e0 и т.д., а в режиме IDE - как обычный IDE "диск" (TrueIDE mode). Оказывается, в стандарте ATA-2 и Compact Flash определен дополнительный 8-битный режим работы для подключения Compact Flash к "простым" 8-битным системам (в ATA-3 этот режим пропал). Примерно 2/3 карт Compact Flash точно следуют спецификации и поддерживают 8-bit mode, а еще в этом режиме могут работать IBM Microdrive диски. Такой режим чрезвычайно упрощает схемотехнику ISA-8 контроллера, фактически он состоит из дешифратора адресов порта и BIOS. Компания LoTech выпускает адаптер для ISA-8 для Compact Flash ATA-2 карт: [[http://www.lo-tech.co.uk/wiki/Lo-tech_ISA_CompactFlash_Adapter_revision_2|ISA CompactFlash Adapter]] | К сожалению, сейчас нередко путают **XT-BUS** и **XT-IDE**. |
| |
| Еще один интересный (но редко используемый) режим имеется у карточек Compact Flash. Как известно, электрический интерфейс Compact Flash может представляться или 16-bit шиной PCMCIA или шиной IDE. В режиме PCMCIA карточка Compact Flash работает как PCMCIA/ISA-16 контроллер IDE на "альтернативных" адресах 0x1e0 и т.д., а в режиме IDE - как обычный IDE "диск" (TrueIDE mode). Оказывается, в стандарте ATA-2 и Compact Flash определен дополнительный 8-битный режим работы для подключения Compact Flash к "простым" 8-битным системам (в ATA-3 этот режим пропал). Примерно 2/3 карт Compact Flash точно следуют спецификации и поддерживают 8-bit mode, а еще в этом режиме могут работать IBM Microdrive диски. Такой режим чрезвычайно упрощает схемотехнику ISA-8 контроллера, фактически он состоит из дешифратора адресов порта и BIOS и панельки под ПЗУ. Пример такого адаптера: [[http://www.malinov.com/Home/sergeys-projects/xt-cf-lite|XT CF Lite]]. Также компания LoTech выпускает адаптер для ISA-8 для Compact Flash ATA-2 карт: [[http://www.lo-tech.co.uk/wiki/Lo-tech_ISA_CompactFlash_Adapter_revision_2|ISA CompactFlash Adapter]]. |
| |
Дополнительные материалы для чтения: | Дополнительные материалы для чтения: |