Работа с дискамиРефераты >> Кибернетика >> Работа с дисками
Порт 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 |