| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| hddxt [2026/02/17 15:32] – admin | hddxt [2026/04/28 15:16] (current) – [XT-BUS и терминология] admin |
|---|
| ====== BIOS XT и HDD ====== | ====== BIOS XT и HDD ====== |
| |
| Как известно, компьютер [[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 (но не жесткий диск!). (Остальной объем ПЗУ занимал ROM BASIC, но его мы тут не обсуждаем). Давайте сначала рассмотрим поддержку устройств в 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, который поддерживал основные устройства XT (но не жесткий диск!). (Также в этом ПЗУ содержится ROM BASIC, но его мы тут не обсуждаем). Давайте сначала рассмотрим поддержку устройств в BIOS IBM PC XT 5160. |
| |
| BIOS XT содержит "драйвера" (сервисы BIOS) довольно ограниченного числа устройств: | BIOS XT содержит "драйвера" (сервисы BIOS) довольно ограниченного числа устройств: |
| На IBM PC XT драйвером в BIOS поддерживаются дисководы двойной плотности DD (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 **не содержит** никаких драйверов жестких дисков, вся поддержка содержится в Optional ROM BIOS (ПЗУ) платы контроллера. | Таким образом, "стандартный" BIOS XT **не содержит** никаких драйверов жестких дисков, вся поддержка содержится в Optional ROM BIOS (ПЗУ) платы контроллера. |
| |
| Стандартный BIOS XT обрабатывает также вызов INT 19 (Boot) и поддерживает загрузку с нулевого устройства, которое, как несложно догадаться, является флопиком 360К. Фактически, обработчик INT 19 на XT состоит из вызова INT 13 "Прочитать сектор" c первого сектора дискеты (Boot Sector) в память по адресу 0000:7С00H (на 1Кб меньше 32К). Если в конце сектора есть сигнатура AAH/55H, то это скорее всего нормальный Boot Sector и BIOS передает туда управление. | Стандартный BIOS XT обрабатывает также вызов INT 19 (Boot) и поддерживает загрузку с нулевого устройства, которое, как несложно догадаться, является флопиком 360К. Фактически, обработчик INT 19 на XT состоит из вызова INT 13 "Прочитать сектор" c первого сектора дискеты (Boot Sector) в память по адресу 0000:7С00H (на 1Кб меньше 32К). Если в конце сектора есть сигнатура 55H/AAH, то это скорее всего нормальный Boot Sector и BIOS передает туда управление. |
| |
| Материалы для дополнительного чтения: | Материалы для дополнительного чтения: |
| * Ralf Brown Interrupt List http://www.ctyme.com/rbrown.htm раздел INT 13H | * 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://bitsavers.org/pdf/westernDigital/pc_disk_controller/ |
| * https://en.wikipedia.org/wiki/Booting#Boot_sequence_of_IBM_PC_compatibles | * https://en.wikipedia.org/wiki/Booting#Boot_sequence_of_IBM_PC_compatibles |
| |
| Второе важное отличие 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, в котором количество дорожек, головок и секторов можно задавать вручную. |
| |
| **UPD** Для совсем нердов - последние редакции BIOS для IBM PС XT 5160 умеют работать с флопиками 1.2Mb. Но для этого нужно заменить штатный контроллер флопиков на контроллер с поддержкой высокой плотности. | **UPD** Для совсем нердов - BIOS для IBM PС XT 5160 поддерживает "старые" односторонние флопики 180К, а последние редакции BIOS умеют работать с флопиками 1.2Mb, но для этого нужно заменить штатный контроллер флопиков на контроллер с поддержкой высокой плотности. |
| ====== Диски MFM ====== | ====== Диски MFM ====== |
| |
| {{ st412_s.jpg?nolink&160|Seagate ST-412}} | {{ st412_s.jpg?nolink&160|Seagate ST-412}} |
| Компьютер IBM PC XT 5160 в отличии от просто IBM PC 5150 продавался уже с жестким диском аж на 10 магабайт. В качестве поставщика IBM выбрала популярного тогда производителя винтов Seagate с моделью диска ST-412. Компания Seagate к тому времени уже была известна как производитель жестких дисков для мини-компьютеров, например она выпускала жесткий диск ST-506 на 5 мегабайт, который применялся в мини-компьютерах DEC (под имененм RD50) с точно такими же шлейфами. Вскоре и другие производители выпустили множество совместимых моделей: Western Digital, Kalok, Tandon, Micropolis e.t.c. Таким образом, интерфейс модели винтов ST-506/412 фирмы Seagate стал де-факто "стандартом" в отрасли персоналок и названием интерфейса для подключения древних жестких дисков. | Компьютер IBM PC XT 5160 в отличии от просто IBM PC 5150 продавался уже с жестким диском аж на 10 мегабайт. В качестве поставщика IBM выбрала популярного тогда производителя винтов Seagate с моделью диска ST-412. Компания Seagate к тому времени уже была известна как производитель жестких дисков для мини-компьютеров, например она выпускала жесткий диск ST-506 на 5 мегабайт, который применялся в мини-компьютерах DEC (под имененм RD50) с точно такими же шлейфами. Вскоре и другие производители выпустили множество совместимых моделей: Western Digital, Kalok, Tandon, Micropolis e.t.c. Таким образом, интерфейс модели винтов ST-506/412 фирмы Seagate стал де-факто "стандартом" в отрасли персоналок и (неофициальным) названием интерфейса для подключения древних жестких дисков. |
| |
| Подробнее в википедии: [[https://en.wikipedia.org/wiki/ST-506]] | Подробнее в википедии: [[https://en.wikipedia.org/wiki/ST-506]] |
| Контроллер 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 (ошибка жесткого диска). | Контроллер 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 13H (стрый адрес сохраняется на INT 40H). Новый обработчик INT 19H меняет логику загрузки: сначала пытается загрузиться с флопика, а в случае неудачи - с первого жесткого диска (устройство 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 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. | BIOS контроллера XT использует некоторые ячейки [[http://stanislavs.org/helppc/bios_data_area.html|BDA]] (BIOS data area), а кроме того, он заполняет область [[https://www.os2museum.com/wp/the-fixed-disk-parameter-table/|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 никаких имен нету, только номера устройств. |
| BIOS контроллера XT (точнее его называть Optional ROM) INT 13 для этого предоставляет еще одну важную функцию: форматирование дорожки (INT 13/AH=05h). Самые древние контроллеры требовали внешнюю программу форматирования, которая просто вызывала форматирование для всех дорожек на диске. Позже программу форматирования зашили в ту же ПЗУ BIOS контроллера. Чаще всего Optional ROM контроллера диска сидит по адресу C800:0000, поэтому в разных популярных изданиях можно увидеть советы запуска форматирования из отладчика на **g=C800:0005** (это не всегда так у различных контроллеров). | BIOS контроллера XT (точнее его называть Optional ROM) INT 13 для этого предоставляет еще одну важную функцию: форматирование дорожки (INT 13/AH=05h). Самые древние контроллеры требовали внешнюю программу форматирования, которая просто вызывала форматирование для всех дорожек на диске. Позже программу форматирования зашили в ту же ПЗУ BIOS контроллера. Чаще всего Optional ROM контроллера диска сидит по адресу C800:0000, поэтому в разных популярных изданиях можно увидеть советы запуска форматирования из отладчика на **g=C800:0005** (это не всегда так у различных контроллеров). |
| |
| Встроенный форматтер на разных контроллерах имеет разный интеллект. В простейшем случае он просто начинает форматировать все дорожки/головки не задавая лишних вопросов, в других случаях ведет длинный диалог с пользователем. Вызов в BIOS тоже никуда не делся и появилось множество красивых диалоговых программ форматирования, например SpeedStor (они иногда имеют проблемы с трансляцией, но об этом ниже). | Встроенный форматтер на разных контроллерах имеет разный интеллект. В простейшем случае он просто начинает форматировать все дорожки/головки не задавая лишних вопросов, в других случаях ведет длинный диалог с пользователем. Вызов в BIOS тоже никуда не делся и появилось множество красивых диалоговых программ форматирования, например [[https://www.minuszerodegrees.net/software/Storage%20Dimensions/speedstor.htm|SpeedStor]] (они иногда имеют проблемы с трансляцией, но об этом ниже). |
| |
| После низкоуровневого форматирования получается жесткий диск, у которого все сектора читаются-пишутся (если они не сбойные), но пока забиты нулями (или каким-то другим мусором). Чтобы диск увидела система (например DOS), необходимо создать на диске таблицу разделов (утилитой fdisk) и создать структуру и оглавление файловой системы (утилитой format). | После низкоуровневого форматирования получается жесткий диск, у которого все сектора читаются-пишутся (если они не сбойные), но пока забиты нулями (или каким-то другим мусором). Чтобы диск увидела система (например DOS), необходимо создать на диске таблицу разделов (утилитой fdisk) и создать структуру и оглавление файловой системы (утилитой format). |
| ===== Геометрия ===== | ===== Геометрия ===== |
| {{ ibm_hdd_1.jpg?nolink&200}} | {{ ibm_hdd_1.jpg?nolink&200}} |
| Как уже написано выше, диск MFM с физической точки зрения состоит из NNN дорожек (Cylinders) и YY головок (Heads) и "свободного" пространства на дорожке. Возникает два вопроса: | Как уже написано выше, диск MFM с __физической__ точки зрения состоит из NNN дорожек (Cylinders) и YY головок (Heads) и "свободного" пространства на дорожке для размещения секторов (Sectors). Так определяется "геометрия" диска C/H/S (Cylinders/Heads/Sectors). Возникает два вопроса: |
| |
| * Каким образом дорожка форматируется на сектора ? | * Каким образом дорожка форматируется на сектора ? |
| * Как контроллер (и DOS) может узнать геометрию MFM диска C/H/S ? | * Как контроллер (и DOS) может узнать геометрию MFM диска C/H/S ? |
| |
| Давайте сначала ответим на второй вопрос. Краткий ответ такой: автоматически определить геометрию MFM диска - **невозможно**. Ни MFM диск ни контроллер не могут сообщить физические параметры диска. Процесс тут идет с другой стороны: именно **пользователь задает** параметры жесткого диска для контроллера. Для этого надо, например, найти производителя и марку жесткого диска. Во времена MFM ходили огромные списки из десятков и сотен моделей жестких дисков, содержащие C/H/S. Для машин IBM AT+ необходимо было найти в BIOS подходящий тип и прописать CMOS (позже появился User Type). Для XT контроллеров все было проще. Самый первый оригинальный Xebec 1210 поддерживал только Seagate ST-412: 306 дорожек и 4 головки. Поздние версии Xebec и WD1002 получили два джампера, которые позволяли выбрать 4 различных типа диска. Но на самом деле, с этих джамперов просто считывался индекс (номер) в таблице C/H/S внутри BIOS-а и при некотором знакомстве с организацией Optional ROM можно их найти и прописать туда любые параметры на любой из 4-х типов (да, нужно будет прошить УФПЗУ). | Давайте сначала ответим на второй вопрос. Краткий ответ такой: автоматически определить геометрию MFM диска - **невозможно**. Ни MFM диск ни контроллер не могут сообщить физические параметры диска. Процесс тут идет с другой стороны: именно **пользователь задает** параметры жесткого диска для контроллера. Для этого надо, например, найти производителя и марку жесткого диска. Во времена MFM ходили огромные списки из десятков и сотен моделей жестких дисков, содержащие C/H/S (разные "Hardware Bible"). Для машин IBM AT+ необходимо было найти в BIOS подходящий тип и прописать CMOS (позже появился User Type). Для XT контроллеров все было проще. Самый первый оригинальный Xebec 1210 поддерживал только Seagate ST-412: 306 дорожек и 4 головки. Поздние версии Xebec и WD1002 получили два джампера, которые позволяли выбрать 4 различных типа диска. Но на самом деле, с этих джамперов просто считывался индекс (номер) в таблице C/H/S внутри BIOS-а и при некотором знакомстве с организацией Optional ROM можно их найти и прописать туда любые параметры на любой из 4-х типов (да, нужно будет прошить УФПЗУ). |
| |
| Более того, если у нас есть например жесткой диск MFM в котором 820 дорожек и 8 головок, то можно задать контроллеру параметры 615/6 и все будет работать, не используя диск полностью. | Более того, если у нас есть например жесткой диск MFM в котором 820 дорожек и 8 головок, то можно задать контроллеру параметры 615/6 и все будет работать, не используя диск полностью. |
| Очень большое количество легенд связано с 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|}} | {{ :interleave-factor.jpg?nolink&300|}} |
| |
| Для чего придумали интерлив (чередование) ? Дело в том, что машины тогда были довольно медленные. XT вместе с контроллером просто не успевала обрабатывать поступающую информацию, и сектор на вращающемся диске успевал "убежать" из под считывающей головки. Чтобы прочитать следующий сектор N+1, надо было ждать целый оборот диска. Идея пришла очень простая. Поскольку все сектора имеют внутри номер, то сектора можно записывать не подряд. Например, у нас на дорожке 17 секторов, и нам надо прочитать сектора 2 и 3. Записываем сектора в таком порядке: | Для чего придумали интерлив (чередование) ? Дело в том, что машины тогда были довольно медленные. XT вместе с контроллером просто не успевала обрабатывать поступающую информацию, и сектор на вращающемся диске успевал "убежать" из под считывающей головки. Чтобы прочитать следующий сектор N+1, надо было ждать целый оборот диска. Идея пришла очень простая. Поскольку все сектора имеют внутри номер, то сектора можно записывать __не подряд__. Например, у нас на дорожке 17 секторов, и нам надо прочитать сектора 2 и 3. Записываем сектора в таком порядке: |
| |
| 1 7 13 2 8 14 3 9 15 4 10 15 5 11 17 6 12 | 1 7 13 2 8 14 3 9 15 4 10 16 5 11 17 6 12 |
| |
| Пока мы разбираемся с сектором 2 под головкой "проскакивают" сектора 8 и 14, а сектор 3 оказывается в нужное время в нужном месте. Тут получается интерлив 3:1, то есть один читаем, два пропускаем, читаем. Для чтения всех 17-ти секторов подряд нам нужно три оборота шпинделя. Соответственно, суммарная скорость "с блина" тоже падает, но зато нам не нужно ждать целый оборот для поиска следующего сектора. При интерливе 1:1 получилась бы самая высокая скорость, но далеко не все контроллеры и машины успевали обработать такой поток. | Пока мы разбираемся с сектором 2 под головкой "проскакивают" сектора 8 и 14, а сектор 3 оказывается в нужное время в нужном месте. Тут получается интерлив 3:1, то есть один читаем, два пропускаем, читаем. Для чтения всех 17-ти секторов подряд нам нужно три оборота шпинделя. Соответственно, суммарная скорость "с блина" тоже падает, но зато нам не нужно ждать целый оборот для поиска следующего сектора. При интерливе 1:1 получилась бы самая высокая скорость, но далеко не все контроллеры и машины успевали обработать такой поток. |
| Как мы помним, в 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), истользует одно младшее прерывание (обычно 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. | 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. |
| |
| Справедливости ради следует отметить, что существуют и "продвинутые" 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 контроллерамии. | Справедливости ради следует отметить, что существуют и "продвинутые" 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 можно считать устройство типа [[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 контроллеру Xebec или WD1002-WX и даже располагается на тех же адресах (320h или 324h). BIOS контроллера располагается "снаружи", на плате контроллера (а не внутри диска), в отдельной ПЗУ или входит в состав BIOS-а материнской платы (на EuroXT). | Таким образом, XT-BUS шина - это просто "удлинитель" урезанной шины ISA-8. На XT-BUS-шлейф выведены "младшие" 2 линии адреса, 8 бит данных, сигналы дешифрации, Reset, а также заведены сигналы одного канала DMA (обычно DMA 3) и один IRQ. По набору команд, контроллер "внутри" жесткого диска XT-BUS практически полностью соответствует ISA-8 контроллеру Xebec или 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. |
| Наконец, термин **AT-BUS** относится более к электрическим и логическим протоколам шлейфа и применяется для обозначения того факта, что электрические сигналы и протокол обмена являются производными от параметров шины ISA-16 компьютера IBM PC AT 5170. Термин не стандартизован. Аналогично, **XT-BUS** относится к шлейфу для подключения диска к 8-битной шине ISA-8. | Наконец, термин **AT-BUS** относится более к электрическим и логическим протоколам шлейфа и применяется для обозначения того факта, что электрические сигналы и протокол обмена являются производными от параметров шины ISA-16 компьютера IBM PC AT 5170. Термин не стандартизован. Аналогично, **XT-BUS** относится к шлейфу для подключения диска к 8-битной шине ISA-8. |
| |
| Также следует упомянуть разработку "[[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 дисков. Название авторское и применяется именно для этой разработки. Для него написан великолепный opensource XT-IDE Universal BIOS (XUB), имеющий кучу опций и поддерживаюший целый ряд контроллеров. |
| |
| К сожалению, сейчас нередко путают **XT-BUS** и **XT-IDE**. | К сожалению, сейчас нередко путают **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]]. | Еще один интересный (но редко используемый) режим имеется у карточек 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]]. |
| |
| Дополнительные материалы для чтения: | Дополнительные материалы для чтения: |
| * [[http://support.mdl.ru/pc_compl/doc/hdd/atafq/atafq.html|Частичный перевод]] FAQ | * [[http://support.mdl.ru/pc_compl/doc/hdd/atafq/atafq.html|Частичный перевод]] FAQ |
| * [[https://ftp.seagate.com/acrobat/reference/111-1c.pdf|Seagate ATA Interface Reference Manual]] | * [[https://ftp.seagate.com/acrobat/reference/111-1c.pdf|Seagate ATA Interface Reference Manual]] |
| | * [[https://www.youtube.com/watch?v=3rgaJqYOPSg|8-bit IDE-XT Hard Drives Demystified]] |
| |
| ===== Дополнительные материалы ===== | ===== Дополнительные материалы ===== |