begin
ah :- $43;
bx := Pages;
Intr67;
Handle :== dx end end; {NewEMSHandle} _— ———————— ——)
Procedure DisposeEMSHandle(var Handle: Word);
{Удаляет дескриптор Handle и освобождаетсвяэаннугэ с ним память} begin
it IsEMS then with Reg do begin
ah := $45;
dx :=• Handle;
Intr67 end
end; {DisposeEMSHandle} /————————————;
Procedure MapEMSPage(Handle,Physic,Logic: Word);
{Картирует окно, связывая его Physic физическую страницу с Logic логической страницейдескриптора Handle} coast
OIdH: Word-$FPFP; {Параметры...}
OldL: Word-$FFFF; {предыдущего...}
OldP: Word=$FFFF; {обращения к процедуре) begin asm
{Проверяем параметры обращения: если они не менялись, значит контекст страниц сохранился и можно не картироватъ)
mov ax,Physic {AX := Physic}
mov bx,Logic BX := Logic}
mov dx,Handle {DX := Handle}
cmp ax,OldP {Physic=01dP ?}
jne @do {Нет - изменилась физ.стр.}
cmp bx,01dL {Logic-OldL ?}
3ne @do {Нет - изменилась логич.стр.}
cmp dx,01dH (Handle^OIdH ?}
js @Exit {Да - параметры не менялись,
не нужно картироватъ, еще раз} @do: {Параметры изменились - картируем:}
mov 01dP,ax {Сохраняем...}
mov 01dL,bx {новые...}
mov 01dH,dx {параметры}
mov ah,$44 {Код функции для картирования}
int $67 {Картируеы}
mov EMSStatus,ah {Новый статус EMS} @Exit: end;
end; {MapEMSPage} ^==^==»-,=====/ end. /Unit F_EMS} /e======».=====;
П7. МОДУЛЬ F_ANTI ДЛЯ ЗАЩИТЫ ПРОГРАММ ОТ ВИРУСОВ
Описание модуля см п.6.3.3.
^==»»=======с»»=; aMIT F_Anti; (=-»«============)
_•+.——————————————————+
I Модуль содержит программу контроля возможного ¦