Курсовая работа: Програма Txtprintcom - резидентна програма для швидкого і зручного друкування виборчого тексту
Iснують i iншi ситуацiї, коли зручнiше було б використовувати функцiї DOS. Отже, треба навчитися перемагати нереентабiльнiсть DOS. Для цього iснує багато можливостей.
Почнем з того, що існує простий (хоча й недокументований) спосiб запобiгнути конфлiктiв з операційною системою. При активiзацiї програма може перевiрити байтовий прапорець активнiстi DOS i, якщо вiн вiдмiнний вiд нуля (сервiс DOS недоступний), повернутись до пасивного стану. Адресу цього прапорця повiдомляє функцiя DOS 34H.
Функція 34H. Дає адресу прапорця активністі DOS
Виклик: AH = 34H
Повертає: ES:BX- адреса прапорця
Нажаль, якщо вибрати цей путь, така резидентна программа, скоріше за все, взагалі буде не взмозі стартувати. Це пов`язано з тим, що COMMAND.COM та багато інших програм проводять багато часу в очикуванні ввода строки з клавіатури посредством функції DOS 0AH, і, отже, прапорець активністі DOS майже завжди взведений. Ця обставина використовується у диспетчері функцій DOS, який може мати вигляд на зразок цього:
Int_21h PROC far
sti
pushf
cmp ah,0Ah ; якщо номер функції не рівний 0ah,
jnzExec ; то приступити к виконанню.
Fn0Ah:
pushax ; якщо функція 0ah, то затримати
movah,0bh ; її виповнення до тіх пір, поки у
int 21h ; буфері клавіатури не з`явиться
cmpal,0 ; хочаб один символ.
pop ax
jnz Exec
push cx
mov cx,4000h
Delay: loop Delay ; зробити паузу
pop cx
jmp short Fn0Ah ; і повторити перевірка буфера.
Exec:
or byte ptr cs:DOS_busy,01h ; встановити признак
; зайнятості DOS.
Popf ; визвати початковий обробник.
pushf
call dword ptr cs:[Int_21h_vect]