На главную Назад
Добро пожаловать, уважаемый посетитель!

Адаптер дисковода является интерфейсом между микропроцессором и

накопителем на гибких магнитных дисках. Схемы, смонтированные на

плате этого адаптера, обеспечивают все функции, необходимые для

ввода и вывода данных на гибкий диск (дискету). Адаптер

обеспечивает также физическое кодирование и декодирование данных,

необходимое для использования дискет.

 

Центральной частью адаптера дисковода фирмы IBM является

микросхема контроллера гибкого диска FDC (Floppy Disk Controller)

мPD765 фирмы NEC. Эта компонента также производится фирмой Intel

как микросхема 8272. Микросхема FDC управляет потоком данных на

дискету и с нее. Микросхема FDC имеет два порта ввода-вывода, один

для данных, а другой для отражения состояния. Порт данных находится

по адресу 3F4H, а порт состояния по адресу 3F5H. Порт данных -

двунаправленный, т.е. в различные моменты времени можно и читать

данные из этого порта, и записывать их в порт. Регистр состояния

можно только читать в любой момент времени. Он сообщает, как в

данный момент нужно работать с регистром данных.

 

В регистре состояния есть 2 бита, которые используются во время

работы с дисководом. Бит 6 - это признак ввода-вывода данных (DIO -

Data Input/Output). Этот бит сообщает, каких действий в отношении

регистра данных ожидает от вас контроллер. Если признак DIO равен

1, микросхема FDC ждет от вас чтения регистра данных. Если DIO

равен 0, FDC ждет записи в регистр данных. Бит 7 порта состояния -

это бит запроса устройства (RQM - Request For Master). Он

аналогичен биту "занято" печатающего устройства. Когда бит RQM

содержит 1, микросхема FDC готова к тому, чтобы читался или

записывался регистр данных. Если вы не уделите внимание биту RQM,

то введете микросхему FDC в заблуждение, и после этого ничего не

будет работать.

 

Регистр данных в действительности не является единственным.

Подобно контроллеру 6845, порт данных фактически состоит из группы

регистров. Но в отличие от микросхемы 6845, регистра индекса

регистров данных здесь нет. Данные, которые вы посылаете в

контроллер, должны поступать в определенном порядке. Аналогично, в

определенном порядке данные поступают из порта, когда вы их

читаете.

 

В техническом описании содержится диаграмма, показывающая

входные и выходные комбинации для всех операций дисковода.

Рассмотрим простейшую команду микросхемы FDC, опрос состояния

механизма. Вы выполняете эту операцию тогда, когда хотите что-либо

узнать о текущем состоянии дисковода. На Фиг. 8.19 показаны данные

для команды опроса состояния, а на Фиг. 8.20 показана программа,

выполняющая операцию опроса состояния дисковода.

 

----------------------------------

Команда...................04H

Модификатор команды.......00H

статус возврата...........ST3Фиг. 8.19 Команда опроса

----------------------------------состояния

A
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:06:03

Фиг. 8.20 Проверка состояния дисковода Page1-1

 

PAGE ,132

TITLE Фиг. 8.20 Проверка состояния дисковода

 

0000 STACK SEGMENT STACK

00000040[ DW 64 DUP (?)

????

]

0080 STACK ENDS

 

FDC_STATUS RECORD RQM:1, DIO:1, OTHER:6

 

0000 CODE SEGMENT

ASSUMECS:CODE

0000 SENSE PROC FAR

00001E PUSH DS ; Адрес возврата

00012B C0 SUB AX, AX

000350 PUSH AX

 

0004BA 03F4 MOV DX, 3F4H ; Порт состояния контроллера дисков

0007B4 04 MOV AH, 04H ; Команда состояния устройства

0009E8 001E R CALL OUTPUT ; Передача в контроллер

000CB4 00 MOV AH, 0 ; Второй байт команды

000EE8 001E R CALL OUTPUT

 

;-----Чтение состояния из контроллера дисков

 

0011 IN_DIO:

0011EC IN AL, DX ; Ждать, пока флаг DIO разрешит ввод

0012A8 80 TEST AL, MASK RQM ;из контроллера

001474 FB JZ IN_DIO

0016 IN_RQM:

0016EC IN AL, DX ; Ждать, пока флаг RQM покажет, что

0017A8 80 TEST AL, MASK RQM ;контроллер готов

001974 FB JZ IN_RQM

 

001B42 INC DX ; Установка на порт данных

001CEC IN AL, DX ; Чтение состояния контроллера

001DCB RET ; Конец примера

001E SENSE ENDP

 

;-----Подпрограмма посылки байта в контроллер

 

001E OUTPUTPROC NEAR

001EEC IN AL, DX ; Ожидание пока DIO разрешит чтение

001FA8 40 TEST AL, MASK DIO ;из контроллера из контроллера

002175 FB JNZ OUTPUT

0023 OUT_RQM:

0023EC IN AL, DX ; Ожидание пока RQM покажет, что

0024A8 80 TEST AL, MASK RQM ;контроллер готов

002674 FB JZ OUT_RQM

 

002842 INC DX ; Установка на порт данных

00298A C4 MOV AL, AH ; Посылаемые данные

002BEE OUT DX, AL ; Вывод в порт

002C4A DEC DX ; Установка на порт состояния

002DC3 RET

002E OUTPUTENDP

002E CODE ENDS

END SENSEA

Фиг. 8.20 Проверка состояния дисковода

Каждое действие, выполняемое контроллером дисковода, состоит из

трех фаз: команды, выполнения и результата. В фазе команды

микросхема FDC ожидает данные, и это отражает бит DIO. Когда

микросхема FDC устанавливает бит RQM, чтобы он указывал на

готовность принять данные, программа может посылать команду в

контроллер. В случае опроса состояния дисковода, она выводит в

микросхему FDC два байта команды. Первый байт, 04H, является кодом

операции этой команды. Второй байт сообщает, какой из механизмов

опросить. В течение командной фазы признак DIO всегда показывает,

что микросхема FDC ждет данные, и программа использует бит RQM для

определения момента, когда можно посылать очередной байт данных.

 

Теперь контроллер переходит в фазу выполнения. В течение этой

фазы контроллер выполняет команду. В данном случае он опрашивает

состояние дисковода. В течение этого времени бит RQM сообщает

программе, чтобы она не использовала порт данных. После завершения

операции признак DIO переключается на 1, сообщая программе, что она

может читать регистр данных. По разрешению RQM программа может

прочитать единственный байт состояния от этой операции. Как только

программа прочитает всю информацию состояния признак DIO снова

принимает значение 0, ожидая ввода следующей команды.

 

Как видно из таблицы в техническом описании, команда опроса

состояния дисковода - одна из самых простых. Команде чтения данных

требуется девять байт данных во время командной фазы. Когда

операция завершится, программа должна прочитать семь байт состояния

из контроллера. Выполнение не начинается до тех пор, пока не

присылается шестой командный байт, и вы не можете начать другую

операцию, пока не будут прочитаны все семь байт состояния.

 

По адресу ввода-вывода 3F2H находится цифровой выводной регистр

контроллера дисковода. Этот выводной порт выполняет некоторые

дополнительные операции управления дисководом. Основное назначение

этого порта - управление двигателями дисковода. У механизмов

дисководов 5 1/4 дюйма, используемых в IBM PC, двигатели работают

не непрерывно. Программа должна включить двигатель перед чтением

или записью на дискету - и выключить его после. Если вы оставите

двигатель включенным на все время, это приведет к быстрому износу

дискеты. Когда двигатель работает, на передней панели дисковода

горит красная лампочка.

 

Адаптер использует цифровой выводной регистр и для других

целей. Два бита выбирают необходимый дисковод. Этот регистр также

используется для сброса микросхемы FDC, так как существуют

ошибочные ситуации, которые вводят контроллер в неопределенное

состояние. В таких случаях единственный выход - сбросить контроллер

и попробовать снова.


 

Mail.ru