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










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

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

Повторная активизация TSR

Когда TSR получает запрос повторной активации, она должна убедиться в безопасности дальнейшего выполнения. Эту задачу упрощают действия, выполняемые программой инициализации. TSR должна проверить флажки критической ошибки и критической секции, и убедиться в том, что не выполняются непрерываемые операции. Если дальнейшее продолжение выполнения безопасно, TSR должна сохранить текущие значения регистров, переключиться на свой собственный стек, установить свои собственные подпрограммы критической ошибки и break, записать информацию, сохраненную в различных глобальных переменных DOS и, наконец, установить свою собственную среду, включающую адреса текущих PSP и DTA. Заметим, что очень важен порядок выполнения этих операций!


Кроме этих, могут потребоваться и другие операции. Так, если необходимо использовать изображения, TSR должна сохранять в памяти содержимое экрана. Программа PRINT.COM проверяет сводный регистр прерывания в контроллере 8259. Если активны какие-либо прерывания, отличные от прерываний ISR, которые пробуждают ее, она игнорирует запрос повторной активации. Вероятно, PRINT.COM делает эту проверку, чтобы избежать потери символов последовательного порта и других устройств отображения.


После завершения своей работы, TSR должна произвести откат выполненных шагов и быстро перейти в фоновый раздел, ожидая снова получения запроса повторной активации. TSR должна восстановить значения регистров PSP, DTA, стека и других регистров прерванной программы. После того, как TSR завершит эти шаги, она может безопасно восстановить драйверы обработки критической ошибки и break и осуществить возврат в прерванную программу.


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

Hosted by uCoz