| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| hddxt [2026/02/17 15:32] – admin | hddxt [2026/02/19 08:26] (current) – [Форматирование жесткого диска MFM] admin |
|---|
| Новый обработчик 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). |
| К сожалению, сейчас нередко путают **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]]. |
| |
| Дополнительные материалы для чтения: | Дополнительные материалы для чтения: |