5.10.1. Фн 34h - Взять флаг активности ДОС

Error message

Notice: Undefined index: add term path in hansel_get_breadcrumbs() (line 524 of /data/sites/msdosworld.ru/www/sites/all/modules/hansel/hansel.module).

 

      Вход: AH = 34h (НЕДОКУМЕНТИРОВАНО)

 

      Выход: ES:BX = адрес флага активности ДОС

 

      Описание:  Эта  НЕДОКУМЕНТИРОВАННАЯ  функция  возвращает  в

 ES:BX адрес  внутреннего флага ДОС,  который устанавливается при

 выполнении любой функции ДОС и обнуляется при ее завершении.

 

      Флаг   активности  ДОС   проверяется  многими  резидентными

 программами (в частности, PRINT); если ES:[BX] не равно нулю, то

 резидентная программа не должна вызывать никакие функции ДОС - в

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

 непредсказуемы, но заведомо печальны.

 

      Резидентная  программа,  получающая  управление  по нажатию

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

 активности ДОС и ожидать его  сброса перед обращением к функциям

 ДОС.  Сложность  ситуации  в  том,  что  COMMAND.COM и некоторые

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

 ДОС 0Ah. Поэтому флаг активности  ДОС почти все время установлен

 и доступ к функциям ДОС запрещен.

 

      Вы  можете обойти  эту  сложность,  перехватывая Int  21h и

 обрабатывая фн 0Ah специальным  образом. Именно, при обращении к

 фн  0Ah не  обрабатывайте ее  немедленно, а  организуйте цикл из

 коротких  задержек и  обращений к  фн 0Bh,  пока не будет нажата

 какая-либо клавиша. После этого Вы можете передать управление фн

 0Ah. Тем  самым Вы получаете период  времени, в течение которого

 флаг активности  ДОС сброшен и  Ваш обработчик прерываний  может

 использовать функции  ДОС. Вы можете также  перехватить Int 28h,

 если любите искать приключения.

 

      Примечания:

 

      1. Эта фн изменяет значение сегментного регистра ES.

 

      2.   Многие  резидентные   программы  не   пользуются  этой

 недокументированной   функцией,  а   перехватывают  Int   21h  и

 отслеживают состояние ДОС самостоятельно.

 

      См. также: Фн 0Ah

               Фн 0Bh

Вы находитесь в разделе: 

Добавить коментарий