На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 6 / Команды STATUS и FLUSH INPUT/OUTPUT Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Команды STATUS и FLUSH INPUT/OUTPUT

         ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
         єКоманды STATUS и FLUSH INPUT/OUTPUT (6,7,10,11)               є
         є                                                              є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД         ЪДДДї                є
         є+00 : 13                   Длина         і   і Блок. драйверы є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД         АДДДЩ                є
         є+01 : номер           Устройство         ЪДДДї                є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД         і X і Симв. драйверы є
         є+02 : команда            Команда         АДДДЩ                є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД                              є
         є+03 :                     Статус       ЪДДДДДДДДДДДДДДДДДДДДї є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       і КОМАНДЫ :          і є
         є                 Зарезервировано       і                    і є
         єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       і  6 : INPUT STATUS  і є
         є                                       і  7 : INPUT FLUSH   і є
         є                                       і 10 : OUTPUT STATUS і є
         є                                       і 11 : OUTPUT FLUSH  і є
         є                                       АДДДДДДДДДДДДДДДДДДДДЩ є
         ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј

Эта команда предназначена для того, чтобы MS-DOS могла, во-первых, определить наличие данных, не используя команду INPUT, которая может привести к длительному ожиданию данных, и, во-вторых, анализировать следующий символ в буфере без изъятия его оттуда.


Команды I/O STATUS и I/O FLUSH (команды 6,10 и 7,11, соответственно) требуются только для символьных устройств и не используются блоковыми.


Команды INPUT STATUS и INPUT FLUSH имеют смысл только для тех драйверов символьных устройств, которые поддерживают управляемые прерываниями очереди вводимых данных, хотя эти команды могут вызываться для любого символьного драйвера.Команда INPUT STATUS используется для индикации состояния очереди следующим образом:


* Если очередь есть, но она пуста, то драйвер должен установить биты DONE и BUSY в слове состояния и вернуть управление.


* Если в очереди есть символы, доступные для чтения, то драйвер должен установить бит DONE, сбросить бит BUSY и вернуть управление.


* Если очередь не поддерживается, то драйвер должен установить бит DONE, сбросить бит BUSY в слове состояния и вернуть управление. Это выглядит странным - уведомлять MS-DOS о наличии символа, когда даже очереди нет.Объяснение заключается в том, что после такого ответа MS-DOS выдаст команду INPUT для считывания символа. Если же этого не сделать, то MS-DOS будет продолжать опрашивать статус ввода бесконечно, так как из-за отсутствия очереди статус всегда будет одним и тем же.


Команда INPUT FLUSH применяется для уведомления драйвера о необходимости удаления всех находящихся в данный момент во входной очереди символов. После очистки очереди (если таковая имеется) драйвер должен установить бит DONE и вернуть управление. При обработке этой команды не должно возникать никаких ошибок, по крайней мере MS-DOS предполагает, что эта команда всегда завершается успешно.


Команда OUTPUT STATUS используется для проверки состояния выходной очереди или устройства. Если драйвер не поддерживает выходную очередь, то следует, по возможности, вернуть состояние самого устройства. Состояние определяется битом BUSY ("занято") слова состояния (состояние "занято" означает что вывод задерживается). Установив состояние, драйвер должен установить бит DONE и вернуть управление.


Команда OUTPUT FLUSH предназначена для указания драйверу необходимости удалить все находящиеся в выходной очереди символы (если очередь поддерживается) и, если это возможно, немедленно прекратить любые операции вывода. После выполнения этих действий драйвер должен установить бит DONE в слове состояния драйвера и вернуть управление MS-DOS.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz