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 Модуль содержит программу контроля возможного ¦