Работа с дискамиРефераты >> Кибернетика >> Работа с дисками
Группа команд "Сканирование" позволяет сравнивать данные, поступающие от контроллера и от центрального процессора. Контроллер выполняет побайтное сравнение и ищет сектор, удовлетворяющий заданному условию. При выполнении условия сканирования в регистре состояния ST2 устанавливается флаг SH, в противном случае - флаг SN.
4.3 Использование команд контроллера НГМД.
Выполнив сброс контроллера, вам надо его проинициализировать, указав все рабочие параметры. Затем можно выдавать контроллеру команды, каждый раз проверяя регистр основного состояния ST и анализируя байты результата ST0 .ST3. Можно предложить следующую последовательность действий:
• сброс контроллера выдачей в порт 3F2h байта с битом 2, установленным в 0;
• разрешение работы контроллера выдачей в этот же порт байта с битом 2, установленным в 1;
• выдача контроллеру команды "Инициализация";
• выдача контроллеру команды "Определить параметры";
• включение двигателя и ожидание в течение примерно 0,5 с (время разгона двигателя);
• установка головки в нужное положение командой "Поиск";
• проверка результатов установки командой "Чтение состояния прерывания";
• для IBM PC/AT установка нужной скорости передачи данных выдачей в порт 3F7h байт с соответствующим значением: 0 для дискет с высокой плотностью записи (HD), 1 для двойной плотности (DD) и 2 для одинарной (SD);
• если установка головок выполнена правильно, можно выдавать команды чтения или записи данных (перед этим надо правильно запрограммировать контроллер прямого доступа к памяти, если вы собираетесь использовать режим ПДП).
4.4 Немного о контроллере прямого доступа к памяти.
Приведем основные сведения, необходимые для того чтобы разобраться в программе, демонстрирующей использование команд контроллера НГМД.
Контроллер прямого доступа к памяти (ПДП) имеет несколько каналов и для IBM PC/AT состоит из двух микросхем Intel 8237A (или аналогичных). Контроллер НГМД использует канал с номером 2.
Перед началом инициализации контроллера ПДП программа должна послать в порты 0Bh и 0Ch код операции, которая будет выполняться - 46h для операции чтения и 4Ah для операции записи.
В процессе инициализации программа должна сообщить контроллеру ПДП адрес буфера, куда ему следует поместить данные или откуда надо взять данные, и длину передаваемых данных в байтах.
Адрес необходимо представить в виде номера страницы и смещения. Для контроллера ПДП компьютера IBM PC/AT используется 8-битовый номер страницы и 16-битовое смещение. Например, для адреса 23456h номер страницы будет равен 2h, а смещение - 3456h.
Для программирования канала 2 контроллера ПДП программа должна сначала вывести младший байт смещения в порт с адресом 04h, затем вывести в этот же порт старший байт смещения и, наконец, вывести байт номера страницы в порт с адресом 81h.
Длина передаваемых данных выводится аналогичным образом в порт с адресом 05h - сначала младший байт длины, затем старший.
После определения режима работы канала, адреса буфера и длины передаваемых данных, программа должна разрешить работу контроллера ПДП, выдав в порт с адресом 0Ch байт 2. Теперь канал прямого доступа готов к работе и будет ждать данные от контроллера НГМД.
Глава 5. Функции BIOS для работы с дисками.
Наилучший и самый безопасный способ работы с дисками на физическом уровне в среде MS-DOS - использование функций базовой системы ввода/вывода BIOS. Эти функции учитывают все особенности аппаратуры и предоставляют достаточно широкий набор средств доступа к дискам на физическом уровне.
Вся дисковая подсистема обслуживается прерыванием INT 13h . Это прерывание выполняет множество функций. Для вызова определенной функции программа должна занести ее код в регистр AH. При этом в другие регистры следует записать параметры - номер НМД или НГМД, номер цилиндра, головки, адрес таблиц параметров НМД или НГМД и т. д.
Приведем краткую таблицу функций прерывания INT 13h , после чего займемся детальным описанием этих функций. В примечании к описанию функций мы будем указывать типы компьютеров, на которых данная функция работоспособна.
Номер функции |
Описание |
00h |
Сброс дисковой системы |
01h |
Определение состояния дисковой системы |
02h |
Чтение сектора |
03h |
Запись сектора |
04h |
Проверка сектора |
05h |
Форматирование дорожки |
06h |
Форматирование дорожки НМД |
07h |
Форматирование НМД |
08h |
Получить текущие параметры НГМД или НМД |
09h |
Инициализация таблиц параметров НМД |
0Ah |
Чтение длинное (только для НМД) |
0Bh |
Запись длинная (только для НМД) |
0Ch |
Поиск цилиндра (только для НМД) |
0Dh |
Альтернативный сброс НМД |
0Eh |
Чтение буфера сектора (только для НМД) |
0Fh |
Запись буфера сектора (только для НМД) |
10h |
Проверка готовности НМД |
11h |
Рекалибровка НМД |
12h |
Проверка памяти контроллера НМД |
13h |
Проверка НМД |
14h |
Проверка контроллера НМД |
15h |
Получить тип НМД или НГМД |
16h |
Проверка замены диска |
17h |
Установка типа дискеты |
18h |
Установка среды носителя данных для форматирования |
19h |
Парковка головок (только для НМД) |
1Ah |
Форматирование НМД с интерфейсом ESDI |