RSS    

   Реферат: Работа с дисками

Порт 3F5h предназначен для записи или чтения данных. Он используется для всех операций.

Выполнение любой операции начинается с того, что программа посылает в этот порт байт кода операции, за которым следует один или несколько байт параметров. Количество байт параметров и их назначение зависит от кода операции (т. е. от первого байта). После выполнения операции программа считывает несколько байт результата для анализа результата выполнения операции.

Порт 3F7h работает на запись и чтение, он используется только в IBM PC/AT.

При записи в этот порт биты 0-1 определяют скорость передачи данных:

Биты Скорость передачи данных, Кбайт/с
00 500 (высокая плотность HD)
01 300 (двойная плотность DD)
10 250 (одинарная плотность SD)
11 Зарезервировано

Приведем назначение отдельных бит порта 3F7h при чтении из него:

Биты Назначение
0 1 - выбран НГМД 0
1 1 - выбран НГМД 1
2-5 Выбраны головки : бит 2 соответствует головке 0, бит 3 - головке 1 и т. д.
6 Переключатель записи
7 1 - признак замены дискеты

4.2 Команды для контроллера НГМД.

Контроллер НГМД может выполнять 15 операций, или команд. Команда разделяется на три фазы - командная фаза, фаза выполнения, фаза результата. В командной фазе программа должна передать контроллеру всю информацию, необходимую для команды. В фазе выполнения команда выполняется, и в фазе результата программа получает от контроллера информацию о состоянии контроллера.

Информация, необходимая для команды, передается контроллеру через порт данных 3F5h. В соответствии с форматом команды программа должна последовательно вывести в этот порт код команды и все параметры.

Прежде чем программа начнет командную фазу, она должна убедиться в том, что контроллер завершил выполнение предыдущей операции и готов к приему команды. Для этого программа должна прочитать байт основного состояния контроллера из порта с адресом 3F4h и проверить биты 6 и 7. Бит 6 должен быть установлен в 0. Это означает, что данные будут передаваться от процессора к контроллеру. Бит 7 должен быть установлен в 1 - это готовность контроллера к приему команды.

Фаза выполнения начинается после установки битов 6 и 7 байта основного состояния в 1. После завершения команды контроллер формирует сигнал запроса прерывания.

В фазе результата процессор считывает состояние контроллера. Это состояние хранится в нескольких внутренних регистрах контроллера:

•          RS - регистр основного состояния;

•          ST0, ST1, ST2, ST3 - регистры дополнительного состояния.

Регистр основного состояния доступен через порт 3F4h, содержимое остальных регистров процессор считывает после выполнения контроллером команды через порт данных 3F5h.

В форматах команд и таблицах, приведенных ниже, используются следующие обозначения:

Обозначение Описание
MT Двухсторонняя операция
MFM Двойная/одинарная плотность записи
SK Пропуск удаленных данных
HDS Номер головки для двухстороннего НГМД
DS1, DS0 Номер выбираемого НГМД
C Номер цилиндра
H Номер головки для двухстороннего НГМД
R Номер сектора
N Число байт в секторе
EOT Номер последнего сектора на дорожке
GPL Размер промежутка
DTL Количество считываемых или записываемых байт
SC Количество секторов в цилиндре
D Данные
PCN Номер цилиндра после выполнения команды чтения состояния прерывания
SRT Время шага, мс
HUT Время разгрузки головки
HLT Время загрузки головки
ND Режим прерывания
NCN Номер цилиндра после поиска

Приведем форматы всех команд контроллера НГМД.

  • Чтение данных
MT MFM SK 0 0 1 1 0
0 0 0 0 0 HDS DS1 DS0
  • Чтение удаленных данных
MT MFM SK 0 1 1 0 0
0 0 0 0 0 HDS DS1 DS0
  • Запись данных
MT MFM 0 0 0 1 0 0
0 0 0 0 0 HDS DS1 DS0
  • Запись удаленных данных
MT MFM 0 0 1 0 0 1
0 0 0 0 0 HDS DS1 DS0
  • Чтение данных с дорожки
MT MFM SK 0 0 0 1 0
0 0 0 0 0 HDS DS1 DS0
  • Сканирование до "равно"
MT MFM SK 1 0 0 0 1
0 0 0 0 0 HDS DS1 DS0
  • Сканирование до "меньше" или "равно"
MT MFM SK 1 1 0 0 1
0 0 0 0 0 HDS DS1 DS0
  • Сканирование до "больше" или "равно"
MT MFM SK 1 1 1 0 1
0 0 0 0 0 HDS DS1 DS0
  • Форматирование дорожки
0 MFM 0 0 1 1 0 1
0 0 0 0 0 HDS DS1 DS0
  • Считывание индексных данных
0 MFM 0 0 1 0 1 1
0 0 0 0 0 HDS DS1 DS0
  • Инициализация
0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 0
  • Чтение состояния прерывания
0 0 0 0 1 0 0 0
  • Определение параметров
0 0 0 0 0 0 1 1
  • Чтение состояния накопителя
0 0 0 0 0 1 0 0
0 0 0 0 0 HDS DS1 DS0
  • Поиск
0 0 0 0 1 1 1 1
0 0 0 0 0 HDS DS1 DS0

Первые несколько команд имеют одинаковый формат параметров и одинаковые байты результата.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.